Как поддерживать актуальность 2 списков Tkinter (python) с несколькими вариантами выбора? - PullRequest
0 голосов
/ 23 января 2020

Я создал диалог, используя Tkinter в python. У меня есть 2 списка Wickbox, которые настроены для множественного выбора. Я установил события для каждого списка и использую curselection, чтобы получить список выбранных в данный момент элементов в списке. Однако, когда я нажимаю во втором списке, элементы в первом списке больше не выделяются. Ниже приведены некоторые фрагменты кода:

Создание первого списка:

    casebox = Listbox(self.window, listvariable=casevalues, selectmode=MULTIPLE, width=10, height=10)
    casebox.grid(column=1, row=self.dlgRow, columnspan=1, rowspan=2)
    casebox.bind('<<ListboxSelect>>', oncaseselect)

Второе окно списка похоже:

    plotbox = Listbox(self.window, listvariable=plotvalues, selectmode=MULTIPLE, width=30, height=10)
    plotbox.grid(column=2, row=self.dlgRow, columnspan=2, rowspan=2)
    plotbox.bind('<<ListboxSelect>>', onplotselect)

Поля списка отображаются правильно, и я могу Предварительный выбор элементов:

  casebox.select_set(1)
  casebox.select_set(3)

Когда я пытаюсь также предварительно выбрать элементы во втором списке, они выбираются, но в первом поле ничего не отображается:

 plotbox.select_set(1)
 plotbox.select_set(3)

Обработчики событий:

 def oncaseselect(evt):
     w = evt.widget
    #self.selectedCaseList = [w.get(i) for i in w.curselection()]
    self.selectedCaseList=[]
    for i in w.curselection():
        self.selectedCaseList.append(i) 
    refreshPlotList()
    refreshCaseList()

def onplotselect(evt):
   w = evt.widget
   # self.selectedPlotList = [w.get(i) for i in w.curselection()]
   self.selectedPlotList=[]
   for i in w.curselection():
      self.selectedPlotList.append(i)        
   refreshCaseList()
   refreshPlotList()

Я добавил методы refre sh, чтобы обновлять выборки:

def refreshCaseList():
   for item in self.selectedCaseList:
      casebox.select_set(item)

def refreshPlotList():
   for item in self.selectedPlotList:
      plotbox.select_set(pitem)

Без метода refre sh, как только я нажимаю в сюжете, все варианты выбора в поле выбора не выбраны. При использовании методов refre sh происходит то же самое.

Похоже, что я могу отображать только выбранные элементы в одном из списков - тот, по которому щелкают

Любая помощь приветствуется .

боблы

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