Tkinter-按键绑定无法正常工作

时间:2019-02-13 13:42:12

标签: tkinter listbox keyboard bind tkinter-entry

当我选择“输入”字段中未显示的内容时,必须再次按向上/向下键才能工作。中间元素也一样-如果选择,则必须再次按Up或Down才能出现(但现在,列表中选择的内容与输入字段不同)。您必须按两次以使一个值出现在输入字段中。

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()

1 个答案:

答案 0 :(得分:0)

您的回调当前仅绑定到按键事件:

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

您还需要将其绑定到列表框选择事件:

listbox1.bind('<<ListboxSelect>>', selectItem)