У меня есть холст, который вызывает createCategoryMeny (x)
при нажатии.
Эта функция просто создает окно Toplevel ()
,
def createCategoryMenu(tableNumber):
##Not interesting below:
categoryMenu = Toplevel()
categoryMenu.title("Mesa numero: " + str(tableNumber))
categoryMenu.geometry("400x400+100+100")
categoryMenu.focus()
categoryMenu.grab_set()
Label(categoryMenu, text="Elegir categoria \n Mesa numero: " + str(tableNumber)).pack()
## RELEVANT CODE BELOW:
listbox = Listbox(categoryMenu, width=50, height=len(info.listaCategorias))
listbox.pack(pady=20)
for item in info.listaCategorias:
listbox.insert(END, item)
listbox.selection_set(first=0)
##My attempt to solve it
callback = lambda event, tag= "ThisShouldBeTheSelected!!": do(event, tag)
listbox.bind("", callback)
Затем функция do:
def do(event, tag):
print tag
Это успешно печатает `" ThisShouldBeTheSelected !! "` `.
И вот здесь я совершенно застрял.
Я не могу получить элемент, по которому дважды щелкнули мышью (выбранный).
Я хочу передать его как tag =
.
Я пробовал:
listbox.curselection()
Что всегда печатает ('0',)
Если я удалю listbox.selection_set (first = 0)
, я получу только следующее: ()
Таким образом, возникают следующие вопросы:
Примечание:
Я нашел это :
8.5. Почему нет.listbox curselection или selection вернуть правильный элемент , когда я привязываю кнопку к своему списку?
Лучший способ получить выбранный элемент во время события нажатия кнопки в списке - это используйте следующий код:
bind .listbox {set item [% W get [% W ближайший% y]]}
Это гарантирует, что элемент под указателем будет возвращен как элемент . Причина, по которой curselection .listbox может завершиться неудачно, заключается в том, что элементы в curselection не устанавливаются до тех пор, пока не сработает привязка класса Listbox , который по умолчанию находится после привязок экземпляра. Это та же причина, по которой get selection может завершиться неудачно, но он также завершится ошибкой, если вы установите для параметра -exportselection значение 0.
Я не уверен, что это полезно, я не совсем понимаю, что он говорит.