Ich würde gerne ein `QGridLayout`, das mehrere Widgets beinhaltet, bei Bedarf ein- und ausblenden.
Im dafür erstellten Beispielcode kommt beim Auslösen der Umschaltung zwar keine Fehlermeldung, aber an der GUI ändert sich leider auch nichts. Was ist falsch im Code?
main.py
Code: Alles auswählen
#!/usr/bin/python3
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self._show_option_1 = True
self._show_option_2 = True
loadUi("mainwindow.ui", self)
self.show()
def toggle_option_1(self):
self._show_option_1 ^= True
if self._show_option_1:
self.gridLayout_left.setEnabled(True)
print("Optionen 1 eingeblendet")
else:
self.gridLayout_left.setEnabled(False)
print("Optionen 1 ausgeblendet")
def toggle_option_2(self):
self._show_option_2 ^= True
if self._show_option_2:
self.gridLayout_right.setEnabled(True)
print("Optionen 2 eingeblendet")
else:
self.gridLayout_right.setEnabled(False)
print("Optionen 2 ausgeblendet")
def main():
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.pushButton_left.clicked.connect(main_window.toggle_option_1)
main_window.pushButton_right.clicked.connect(main_window.toggle_option_2)
sys.exit(app.exec_())
if __name__ == "__main__":
main()
mainwindow.ui
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_left">
<item row="0" column="0">
<widget class="QLabel" name="label_left">
<property name="text">
<string>Optionen 1:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_left"/>
</item>
</layout>
</item>
<item row="0" column="1">
<layout class="QGridLayout" name="gridLayout_right">
<item row="0" column="0">
<widget class="QLabel" name="label_right">
<property name="text">
<string>Optionen 2:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_right"/>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_left">
<property name="text">
<string>Optionen 1 ein-/ausblenden</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_right">
<property name="text">
<string>Optionen 2 ein-/ausblenden</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>28</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
Gruß
Atalanttore