Как я могу обновить эти инициализированные «импортированные» кнопки? - PullRequest
0 голосов
/ 19 января 2019

Я использую этот класс Combobox_Autocomplete отсюда: http://code.activestate.com/recipes/580770-combobox-autocomplete/

По сути, он создает запись с функцией автозаполнения, основанную на списке, который предоставляется ей при создании экземпляра класса.

В моем случае, чтобы упростить, скажем, мне нужно столбцов в моей таблице, которая выглядит следующим образом:

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

Это, однако, не обновляет список, связанный с комбинированным списком, поскольку он не инициализирует этот комбинированный список.У кого-нибудь есть идеи, как мне этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...