I 2 Sätze 3 Tasten, die jeweils mit einem QDialogButtonBox() wie folgt:Gleiche Signale aber auf verschiedene Tasten
- "Hinzufügen" (AcceptRole)
- "Entfernen" (RejectRole)
- "Clear" (ResetRole)
so etwas:
self.set1_btns = QtGui.QDialogButtonBox()
self.set1_btns.addButton("Add", QtGui.QDialogButtonBox.AcceptRole)
self.set1_btns.addButton("Remove", QtGui.QDialogButtonBox.RejectRole)
self.set1_btns.addButton("Clear", QtGui.QDialogButtonBox.ResetRole)
wo ihre Rolle ungefähr gleich ist, der einzige Unterschied zwischen ihnen ist, dass sie jedes ihrer eigenen QListWidget, das ich ihnen zugewiesen habe, hinzufügen/entfernen/löschen werde.
Dinge zu vereinfachen, sind die Mengen wie folgt: (Listex - QListWidget, Hinzufügen/Entfernen/Löschen - QPushButton)
- Set1: List1, Add1, Remove1, Clear1
- Set2: List2, add2, Remove2, clear2
Dies ist mein Code:
def connect_signals(self):
# List1 functions - Add, Remove, Clear
self.set1_btns.accepted.connect(self.add_objects)
self.set1_btns.rejected.connect(self.remove_objects)
self.set1_btns.clicked.connect(self.clear_objects)
# List2 functions - Add, Remove, Clear
self.set2_btns.accepted.connect(self.add_objects)
self.set2_btns.rejected.connect(self.remove_objects)
self.set2_btns.clicked.connect(self.clear_objects)
def add_objects(self):
selections = ['aaa', 'bbb', 'ccc']
for sel in selections:
# I can only define it to add to list1
self.list1.addItem(sel)
def remove_objects(self):
for item in self.list1.selectedItems():
self.list1.takeItem(self.list1.row(item))
def clear_objects(self):
# self.list1_btns are the QDialogButtons
role = self.list1_btns.buttonRole(button)
if role == QtGui.QDialogButtonBox.ResetRole:
self.list1.clear()
Meine Frage hier wäre, wie kann ich meiner Funktion sagen, welcher Knopf, von welchem der Sätze zu klicken ist?
Aus Gründen der Vernunft, ich dachte, es wird ideal sein, um in 1 Funktionen zu kombinieren, da sie etwa gleich arbeiten, anstatt 2 separate Funktionen zu schreiben, wo die einzige Änderungen die QListWidget-Variable sein wird.
Bitte ignorieren Sie meinen Beitrag .. Es funktioniert tatsächlich. Ja, anfänglich verband ich 'clear' Methode mit' clear' Taste – dissidia
Nur eine kurze Frage, ist es möglich, dass sich die 'add' Tasten des 2 Sets instinktiv kennen? Z.B. wenn ich 'itemA' in list1 hinzufüge, wenn ich den add button für set2 drücke, sollte list2 nicht 'itemA' hinzufügen, da es bereits in list1 ist. – dissidia
Ich habe gerade festgestellt, dass dieser Code alle neuen Zusätze löscht, wenn ich versuche hinzuzufügen irgendwelche neuen Objekte. Z.B. Wenn die Liste bereits 3 Objekte enthält und ich versucht habe, ein weiteres neues Objekt hinzuzufügen, werden die Objekte in der Liste gelöscht und jetzt wird die Liste nur dieses 'neue' einzelne Objekt enthalten, möglicherweise nur weil '.clicked.connect' verwendet wird – dissidia