【发布时间】:2016-02-09 14:33:33
【问题描述】:
当我使用向上/向下键盘键向上和向下滚动时,有谁知道改变 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()
这里有一个简短的示例版本来演示该问题。 运行代码。单击列表框中的任何项目,您将获得一个消息框,其中包含您单击的列表项的文本。现在不使用鼠标,使用键盘上的向上或向下箭头键并滚动列表。为了触发选择更改事件,您必须按空格键。
【问题讨论】:
-
请显示MCVE。如果您告诉我们您在哪个平台上运行,也会有所帮助。
-
已编辑:用最小的例子。运行 Python 3.x 抱歉含糊不清,但我有 3 个不同版本的 python 3 在 3 个不同的系统 2 Linux 和 1 Mac 上运行,它们都是一样的。
-
您的代码有语法错误,因此这不可能是给出您描述的行为的实际代码。请显示实际运行的代码,并将
selectmode属性设置为BROWSE(无引号)。
标签: python-3.x tkinter listbox listboxitem