繁体   English   中英

Tkinter - 根据另一个 combobox 选择从一个 combobox 动态添加和删除值

[英]Tkinter - Dynamically add and delete values from one combobox based on another combobox selection

我有两个 Ttk 组合框,它们都具有完全相同的值:A、B、C、D。我需要从其中一个中删除我在另一个上选择的值,并且,如果我更改我的选择,我想要删除的值返回并删除新值。 这是为了防止在两个组合上选择相同的值。
那是:
在 combo1 上 I select A. 从 combo2 中删除 A。
然后我在combo1上select B。 将A添加到combo2中; 从中删除 B。
提前致谢!

我想通了,它工作得很好。 它甚至在两个组合中都保持原始顺序。 这就是我所做的:

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())

我希望这对任何人都有用,如果您有任何建议可以使此代码变得更好,我很乐意接受您的建议!

您的解决方案可以简化如下:

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()]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM