Tkinter - привязки клавиш работают неправильно

Когда я выбираю, что-то не отображается в поле ввода, мне приходится снова нажимать вверх/вниз, чтобы работать. То же самое для среднего элемента - если он выбран, мне нужно снова нажать Вверх или Вниз, чтобы появиться (но теперь то, что выбрано в списке, отличается от поля ввода). Вы должны нажать дважды, чтобы значение появилось в поле ввода.

from tkinter import *

def selectItem(event): #puts the value in Entry field
    item = event.widget
    try:
        item != ()
        itemIndex = int(item.curselection()[0])
        valueItem = listbox1.get(itemIndex)
        lEntry.set(valueItem)
        print(event)
    except IndexError:
        return

root = Tk()
root.geometry('400x400')

frame = Frame(root)
frame.pack(expand=1,fill=BOTH)

lEntry = StringVar()
listEntry = Entry(frame,textvariable = lEntry,width = 30)
listEntry.pack(side = TOP)

listbox1 = Listbox(frame,selectmode = EXTENDED)
listbox1.pack(side=BOTTOM)

listbox1.bind('<Up>',selectItem) 
listbox1.bind('<Down>',selectItem) 



for item in ["Youtube", "Linkedn", "Facebook"]:
    listbox1.insert(END, item)

root.mainloop()

person papa leon    schedule 13.02.2019    source источник


Ответы (1)


Ваш обратный вызов в настоящее время привязан только к событиям нажатия клавиш:

listbox1.bind('<Up>',selectItem) 
listbox1.bind('<Down>',selectItem) 

Вам также нужно привязать его к событию выбора списка:

listbox1.bind('<<ListboxSelect>>', selectItem)
person malberts    schedule 13.02.2019
comment
Спасибо. Я поставил ‹‹›ListboxSelect››, и теперь я могу использовать мышь и клавишу со стрелкой. :) - person papa leon; 13.02.2019