Tkinter列表框

2024-04-19 15:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用一次点击列表框来执行函数。这是我的想法:

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

但是这个函数在执行选择之前打印…当您运行这个代码时,您将看到问题所在。


Tags: 函数fromimporttkintertopdeftkperl
1条回答
网友
1楼 · 发布于 2024-04-19 15:19:57

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

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

相关问题 更多 >