Tkinter - 运行 列表框选择时的事件函数
Tkinter - Run Event Function Upon Listbox Selection
我有一个 ListboxSelect 事件绑定到我的列表框 lb。我正在使用 selection_set 到 select 列表框中的一个项目,但绑定函数没有 运行。当我使用 selection_set select 列表框中的一个项目时以及单击它时,如何使函数 运行 生效?
import tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.lb = tk.Listbox(self)
for x in range(20):
self.lb.insert("end", x)
self.lb.bind("<<ListboxSelect>>", self.OnSelect)
self.lb.pack(side="top", fill="both", expand=True)
def OnSelect(self, event):
print(event.widget.get(event.widget.curselection()[0]))
self.lb.selection_set(10)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
感谢 Lafexlos 指点我这个资源:http://wiki.tcl.tk/13939
我的理解是你必须生成一个虚拟事件,然后我发现可以使用 event_generate
在 tkinter 中完成。
self.lb.event_generate("<<ListboxSelect>>")
以上行可用于为列表框生成事件。
我有一个 ListboxSelect 事件绑定到我的列表框 lb。我正在使用 selection_set 到 select 列表框中的一个项目,但绑定函数没有 运行。当我使用 selection_set select 列表框中的一个项目时以及单击它时,如何使函数 运行 生效?
import tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.lb = tk.Listbox(self)
for x in range(20):
self.lb.insert("end", x)
self.lb.bind("<<ListboxSelect>>", self.OnSelect)
self.lb.pack(side="top", fill="both", expand=True)
def OnSelect(self, event):
print(event.widget.get(event.widget.curselection()[0]))
self.lb.selection_set(10)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
感谢 Lafexlos 指点我这个资源:http://wiki.tcl.tk/13939
我的理解是你必须生成一个虚拟事件,然后我发现可以使用 event_generate
在 tkinter 中完成。
self.lb.event_generate("<<ListboxSelect>>")
以上行可用于为列表框生成事件。