Tkinter - 键绑定无法正常工作
Tkinter - key bindings not working correctly
当我 select 某些东西没有出现在输入字段中时,我必须再次按 Up/Down 才能工作。中间元素相同 - 如果是 selected,我必须再次按向上或向下键才能出现(但是现在,列表中的 selected 与输入字段不同)。您必须按两次才能在输入字段中显示一个值。
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()
您的回调目前仅绑定到按键事件:
listbox1.bind('<Up>',selectItem)
listbox1.bind('<Down>',selectItem)
您也需要将其绑定到列表框 select 事件:
listbox1.bind('<<ListboxSelect>>', selectItem)
当我 select 某些东西没有出现在输入字段中时,我必须再次按 Up/Down 才能工作。中间元素相同 - 如果是 selected,我必须再次按向上或向下键才能出现(但是现在,列表中的 selected 与输入字段不同)。您必须按两次才能在输入字段中显示一个值。
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()
您的回调目前仅绑定到按键事件:
listbox1.bind('<Up>',selectItem)
listbox1.bind('<Down>',selectItem)
您也需要将其绑定到列表框 select 事件:
listbox1.bind('<<ListboxSelect>>', selectItem)