Я зашел в тупик в своих знаниях GUI и знаниях Tkinter.
Вопрос:
Я хочу перемещать элементы между списками в виде «динамик c» way.
Я в своей функции Create_Widget()
определил несколько списков вроде этого. В этом случае 5
.
for lbIdx in range(1:6):
self.listbox[lbIdx] = tk.Listbox(self.center, selectmode='multiple', height=25,
width=40, exportselection=0)
Я также создал несколько кнопок, которые появляются между списками:
# dynamic buttons
for btn_rID in range(1,6):
self.btn_right[btn_rID] = tk.Button(self.center, text = '>>',
command=lambda i=btn_rID: self.move_item_right(i))
for btn_lID in range(1,6):
self.btn_left[btn_lID] = tk.Button(self.center, text = '<<',
command= lambda i=btn_lID: self.move_item_left(i))
Кнопки используют аналогичные функции move_item_right()
и move_item_left()
.
Проблема возникает, когда я хочу переместиться вправо или влево со следующим кодом:
def move_item_right(self, btn_ID):
# btn_ID holds the information of which button_idx was pressed
idxToMove = self.listbox[btn_ID].curselection()
itemToMove = self.listbox[btn_ID].selection_get()
self.listbox[btn_ID+1].insert(idxToMove,itemToMove)
self.listbox[btn_ID].delete(idxToMove)
Я получаю эту ошибку:
File "C:\Python38\lib\tkinter\__init__.py", line 968, in selection_get
return self.tk.call(('selection', 'get') + self._options(kw))
_tkinter.TclError: PRIMARY selection doesn't exist or form "STRING" not defined
До этого все работало хорошо Я начал использовать динамические определения кнопок. Но потом я должен был написать одну функцию для каждого вызова кнопки.
Может кто-нибудь интерпретировать эту странную ошибку? Когда я использую отладчик, отладчик входит в определение кнопки после
itemToMove = self.listbox[btn_ID].selection_get()