`QGridLayout` mit Widgets bei Bedarf ein- und ausblenden
Verfasst: Donnerstag 2. Mai 2019, 19:21
Hallo
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
mainwindow.ui
Gruß
Atalanttore
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