Hallo,
ich bin gerade dabei ein Programm in python zu schreiben. Für die grafische Oberfläche verwende ich PyQt4. Ich habe mit dem Qt-Desinger einen Dialog erstellt und die ui in ein .py umgewandelt. So weit so gut. Jetzt möchte ich aber durch das Programm noch weitere Buttons in den Dialog einfügen lassen. Dazu habe ich eine liste in der so etwa 6-8 Strings enthalten sind. Bei jedem Aufruf des Dialogs soll nun für jeden dieser Strings ein Check-Button erstellt werden. Das Problem ist, dass sich die liste verändern kann, deshalb kann ich die Buttons nicht fest einbinden.
Ist so etwas möglich und wenn ja, wie?
Danke für die Hilfe
Mfg albi
Buttons durch Programm selbst in Dialog einfügen
Du musst irgendwo in deinem ui ein Layout haben, in dem die Buttons angeordnet sind. Was spricht dagegen, je nach Anforderung diesem einen Button mit addWidget() hinzuzufügen?
Jetzt stellt sich nur noch die Frage, ob du auch während der Dialog bereits offen ist, noch CheckBoxen hinzufügen können musst, oder ob bereits beim Starten des Dialogs alles bekannt ist.
Für ersteres bietet sich eine Methode
an, welche dann dem (privaten?) ui eine CheckBox ginzufügt und ggf. SIGNALS connected.
Für zweiteres sollte es reichen, wenn du dem Konstruktor eine string-list übergibst, und diese gleich dort hinzufügst. Ich bin mir sicher das willst du.
Jetzt stellt sich nur noch die Frage, ob du auch während der Dialog bereits offen ist, noch CheckBoxen hinzufügen können musst, oder ob bereits beim Starten des Dialogs alles bekannt ist.
Für ersteres bietet sich eine Methode
Code: Alles auswählen
def addCheckBox( self, label ):Für zweiteres sollte es reichen, wenn du dem Konstruktor eine string-list übergibst, und diese gleich dort hinzufügst. Ich bin mir sicher das willst du.
Hallo franzf,
danke für die Tipps. Das hat mich weitergebracht.
Mit dem folgenden Code im Konstruktor werden die Buttons in den Dialog eingefügt und über die Liste self.buttonliste habe ich dann zugriff auf die einzellen Buttons:
Mfg
albi
danke für die Tipps. Das hat mich weitergebracht.
Mit dem folgenden Code im Konstruktor werden die Buttons in den Dialog eingefügt und über die Liste self.buttonliste habe ich dann zugriff auf die einzellen Buttons:
Code: Alles auswählen
for vm in listeVm:
self.vm_bu = QtGui.QCheckBox(self.layoutWidget)
self.vm_bu.setChecked(True)
self.vm_bu.setObjectName(vm[1])
self.vm_bu.setText(vm[1])
self.verticalLayout.addWidget(self.vm_bu)
self.buttonliste+=[self.vm_bu]
Mfg
albi