Tkinter列表框

DRd*_*Rdr 5 python listbox tkinter

我想在列表框上单击一下来执行功能.这是我的想法:

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()
Run Code Online (Sandbox Code Playgroud)

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

Cor*_*hin 9

您可以<<ListboxSelect>>按照本文中的描述绑定到事件:在更改Tkinter列表框选择时获取回调? 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()
Run Code Online (Sandbox Code Playgroud)