有没有人知道让tk.listbox选择更改的方法我用向上/向下键盘键向上和向下滚动?
目前我从鼠标点击中获得了一个事件。
但如果我使用向上/向下键滚动到列表条目,我就不会收到任何事件,直到我点击空格键。
我想要的是curselection()在滚动时自动更改而不必使用空格键。我希望通过按下每个向上或向下键来改变列表框选择来消除空格键的需要。
from tkinter import *
from tkinter import messagebox
def onlbclick(evt):
w=evt.widget
index = int(w.curselection()[0])
value=w.get(index)
messagebox.showinfo("Listbox Select",'You selected listitem %d: "%s"', % (index, value))
root = Tk()
root.geometry("200x200")
root.title("List Box Test")
fr = Frame(root, width=200, height=200,bg="grey")
fr.pack()
lb=Listbox(fr,selectmode="SINGLE",bg="white")
lb.insert(1,"blah")
lb.insert(2,"blah blah")
lb.insert(3, "blah blah blah")
lb.insert(4, "blah blah blah blah")
lb.grid(row=1, rowspan=10, column=0,columnspan=5, sticky='W', /
padx=5, pady=5,ipadx=5, ipady=5)
lb.bind('<<ListboxSelect>>', onlbclick)
root.mainloop()
这是一个简短的示例版本,用于演示此问题。 运行代码。单击列表框中的任何项目,您将获得一个消息框,其中包含您单击的列表项的文本。现在不使用鼠标,使用键盘上的向上或向下箭头键并滚动列表。要触发选择更改事件,您必须按空格键。
答案 0 :(得分:0)
您描述的行为是selectmode
设置为"browse"
时获得的行为,这是默认设置。
在您编辑的示例中,您将selectmode
设置为"SINGLE"
。 这是无效模式。它需要是Tkinter常量BROWSE
(无引号)或文字字符串"browse"
:
lb=Listbox(fr, selectmode=BROWSE, bg="white")
-OR -
lb=Listbox(fr,selectmode="browse",bg="white")