Tkinter - динамическое добавление и удаление значений из одного поля со списком на основе выбора другого поля со списком - PullRequest
0 голосов
/ 10 июля 2020

У меня есть два комбинированных списка Ttk, оба с одинаковыми значениями: A, B, C, D. Мне нужно удалить из одного из них значение, которое я выбрал на другом, и, если я изменю Мой выбор, я хочу вернуть это удаленное значение и удалить новое значение. Это сделано для предотвращения выбора одного и того же значения для обеих комбинаций.
То есть:
В combo1 я выбираю A. Удалите A из combo2.
Затем я выбираю B в combo1. Добавьте A в combo2; удалите из него B.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Ваше решение можно упростить, как показано ниже:

def update_combos(self, event):
    self.cmb_group1["values"] = [x for x in self.lst_combo if x != self.cmb_group2.get()]
    self.cmb_group2["values"] = [x for x in self.lst_combo if x != self.cmb_group1.get()]
0 голосов
/ 10 июля 2020

Разобрался и работает отлично. Он даже сохраняет исходный порядок в обеих комбинациях. Вот что я сделал:

def update_combos(self, event):
    if self.cmb_group1.get() in self.cmb_group2["values"]:
        index = self.lst_combo.index(self.cmb_group1.get())
        self.lst_combo.remove(str(self.cmb_group1.get()))
        self.cmb_group2["values"] = self.lst_combo
        self.lst_combo.insert(index,self.cmb_group1.get())

    if self.cmb_group2.get() in self.cmb_group1["values"]:
        index = self.lst_combo.index(self.cmb_group2.get())
        self.lst_combo.remove(str(self.cmb_group2.get()))
        self.cmb_group1["values"] = self.lst_combo
        self.lst_combo.insert(index,self.cmb_group2.get())

Надеюсь, это может быть полезно для всех! Если у вас появятся предложения по улучшению этого кода, я с радостью приму ваш совет!

...