Я пытаюсь автоматически заполнить список эксклюзивных флажков, где количество флажков изменяется в соответствии с параметром, выбранным в QComboBox.
Я застрял в части, как удалить первоначально добавленные виджетыв макете и замените их новыми виджетами.
Например, если выбран пункт меню - food
, будут показаны 3 флажка ('good2eat', 'macs', 'popeyes') иесли выбран drinks
, эти 3 флажка будут сняты и заменены опциями 'water', 'tea'
class MenuWindow(QtGui.QWidget):
def __init__(self, dict_items, parent=None):
super(MenuWindow, self).__init__(parent=parent)
layout = QtGui.QVBoxLayout()
self.checkbox_options = {}
self.menu_tag_dict = defaultdict(set)
self.menu_combos = QtGui.QComboBox()
self.menu_combos.currentIndexChanged.connect(self.get_selections)
self.chkbox_group = QtGui.QButtonGroup()
for menu_name, submenu_name in dict_items.items():
self.menu_combos.addItems([menu_name])
if submenu_name:
sub_txt = [m for m in submenu_name]
for s in sub_txt:
sub_chk = QtGui.QCheckBox(s)
self.checkbox_options[menu_name] = sub_chk
self.chkbox_group.addButton(sub_chk)
print_btn = QtGui.QPushButton('Print selected')
layout.addWidget(self.menu_combos)
for s in self.checkbox_options.values():
layout.addWidget(s)
layout.addWidget(get_sel_btn)
layout.addStretch()
self.setLayout(layout)
self.show()
def get_selections(self):
# Get combobox text
combo_text = self.menu_combos.currentText()
# get the menus
items = self.menu_combos.get(combo_text)
my_items = {
'food' : ['good2eat', 'macs', 'popeyes'],
'drinks': ['water', 'tea']
}
myWin = MenuWindow(my_items)
myWin.show()
Несмотря на это, в начале кода число опций, заполненных подпункт меню food
уже неправильный.
Есть ли лучший способ, которым я могу справиться с этим ??