如何更新这些初始化的“导入”按钮?

时间:2019-01-19 05:27:39

标签: python tkinter properties

我正在从这里使用名为Combobox_Autocomplete的此类:http://code.activestate.com/recipes/580770-combobox-autocomplete/

它实际上是基于实例化类时为其提供的列表来创建具有自动完成功能的Entry。

为简单起见,假设我必须在表中的列如下所示:

Car_model | Color
    1     | Red
    1     | Blue
    1     | Green
    2     | Red
    2     | Blue
    3     | Red
    3     | Yellow

我本质上想要的是其中两个“自动完成”框,第一个是汽车模型,第二个是颜色,颜色会根据选择的汽车进行调整。

在更新第二个自动完成功能块中的第二个列表时,我遇到了一个障碍。这是我的代码:

class maconomy:
    def __init__(self,master):
        # Assuming df2 is my table
        # Create unique lists of both columns for the autofill features
        self.mylist = list(set(self.df2['Car_model'].tolist()))
        self.myList2 = list(set(self.df2['Color'].tolist()))

        self.combobox_autocomplete1 = Combobox_Autocomplete(master, 
        self.mylist, highlightthickness=1)
        self.combobox_autocomplete1.grid(row = 1, column = 1,padx=10, pady=10)
        self.combobox_autocomplete1.bind('<Double-Return>', lambda event, 
        arg=1: self.update(event, arg))

        self.combobox_autocomplete2 = Combobox_Autocomplete(master, 
        self.myList2, highlightthickness=1)
        self.combobox_autocomplete2.grid(row = 2, column = 1,padx=10, pady=10)
        self.combobox_autocomplete2.bind('<Double-Return>', lambda event, 
        arg=2: self.update(event, arg)) 

    # Update method just switches to next combobox 
    def update(self,event,arg):
        if arg == 5:
            self.commitButton.focus_set()
        else:
            eval('self.combobox_autocomplete'+str(arg+1)+'.focus_set()')

我的主要想法是使mylist2成为属性。更新它,取决于car_model是什么。这就是我所拥有的:

    @property
    def mylist2(self):
        if self.combobox_autocomplete1.get_value() != "":
            self.myList2 = df2[df2['Car_model'] ==self.combobox_autocomplete1.get_value()]['Color']
            return myList2
        else:
            return myList2

但是,这不会更新与组合框关联的列表,因为它不会重新初始化组合框。有谁知道我如何实现这一目标?

0 个答案:

没有答案