у меня есть 2 комплекта из 3 кнопок, каждая из которых с QDialogButtonBox() следующим образом:Те же сигналы, но на разные кнопки
- "Добавить" (AcceptRole)
- "Удалить" (RejectRole)
- "Clear" (ResetRole)
Нечто подобное:
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)
, где их роль примерно одинакова, единственная разница между ними заключается в том, что они будут добавлять/удалять/очищать каждый из своих собственных QListWidget, которые я им «назначил».
Чтобы упростить вещи, наборы являются следующие: (ListX - QListWidget, Добавить/Удалить/Очистить - QPushButton)
- Set1: List1, Add1, Remove1, Clear1
- Set2: list2, add2, Remove2, Clear2
Это мой код:
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()
Мои вопрос здесь был бы в том, как я могу сказать своей функции, чтобы указать, на какой кнопке находится какой из наборов?
Для здравого смысла я думал, что будет идеально сочетаться в 1 функции, поскольку они работают примерно одинаково, вместо того, чтобы писать две отдельные функции, в которых единственными внесенными мной изменениями будут переменная QListWidget.
Прошу игнорировать мое сообщение .. Это на самом деле работает. Да, изначально я подключал метод 'clear' к кнопке' clear' – dissidia
Просто быстрый вопрос: возможно ли, что кнопки 'add' из набора 2 инстинктивно знают друг друга? Например. если я добавлю «itemA» в список1, когда я нажимаю кнопку добавления для set2, list2 не следует добавлять «itemA», потому что он уже находится в списке1 – dissidia
Я только понял, что этот код уничтожит любые новые дополнения, если я попытаюсь добавить любые новые объекты. Например. Если список уже содержит 3 объекта, и я попытался добавить еще один новый объект, объекты в списке были уничтожены, и теперь список будет содержать только этот «новый» единственный объект, возможно, только из-за использования .clicked.connect – dissidia