Tkinter 列表框

Posted

技术标签:

【中文标题】Tkinter 列表框【英文标题】:Tkinter Listbox 【发布时间】:2012-01-28 16:24:16 【问题描述】:

我想一键执行功能列表框。这是我的想法:

from Tkinter import *
import Tkinter

def immediately():
    print Lb1.curselection()

top = Tk()

Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "php")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")

Lb1.pack()


Lb1.bind('<Button-1>', lambda event :immediately() )
top.mainloop()

但是这个函数在执行选择之前打印...当你运行这个代码时你会看到问题是什么。

【问题讨论】:

Getting a callback when a Tkinter Listbox selection is changed?的可能重复 【参考方案1】:

您可以绑定到&lt;&lt;ListboxSelect&gt;&gt; 事件,如本文所述:Getting a callback when a Tkinter Listbox selection is changed? TKinter 有点奇怪,因为信息似乎不包含在发送给处理程序的事件中。还要注意,不需要创建一个简单地调用你的函数immediately的lambda,函数对象可以传入如下所示:

from Tkinter import *
import Tkinter

def immediately(e):
    print Lb1.curselection()


top = Tk()

Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")

Lb1.pack()


Lb1.bind('<<ListboxSelect>>', immediately)
top.mainloop()

【讨论】:

请更新您的导入。您要导入 tkinter 两次,这不是必需的。

以上是关于Tkinter 列表框的主要内容,如果未能解决你的问题,请参考以下文章

使用 tkinter 的网格内的可滚动列表框

tkinter 列表框用 python 拖放

Tkinter列表框和画布不会一起滚动

Tkinter:列表框分隔符、禁用项目、键盘导航?

使用箭头键滚动的 Tkinter 列表框

带有 MySQLdb 的 Python Tkinter 列表框