Lambda 变量赋值(用于 Tkinter 命令回调)
Lambda Variable Assignment (for Tkinter command callbacks)
我试图了解更多关于 Tkinter 的知识,并在网上看到了这段代码
import Tkiner
import ttk
root = Tk()
l =ttk.Label(root, text="Starting...")
l.grid()
l.bind('<Enter>', lambda e: l.configure(text='Moved mouse inside'))
l.bind('<Leave>', lambda e: l.configure(text='Moved mouse outside'))
l.bind('<1>', lambda e: l.configure(text='Clicked left mouse button'))
l.bind('<Double-1>', lambda e: l.configure(text='Double clicked'))
l.bind('<B3-Motion>', lambda e: l.configure(text='right button drag to %d,%d' % (e.x, e.y)))
root.mainloop()
当我 运行 这个程序,并在按下 RMB 的同时将我的鼠标拖到屏幕上时,它给了我坐标,正如它在 "B3-Motion" 绑定中提到的那样。
在这种情况下,临时变量 "e" 到底指的是什么?
谢谢!
当您使用 widget.bind(...)
将函数绑定到事件时,tkinter 在调用函数时将始终将参数传递给表示事件的函数。通常这被命名为 event
,但有时缩写为 e
。
事件对象包含有关事件的信息,例如哪个小部件接收到事件、事件发生时光标的 x/y 坐标以及其他有用信息。
您可以在此处阅读有关该对象的更多信息:http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
.
我试图了解更多关于 Tkinter 的知识,并在网上看到了这段代码
import Tkiner
import ttk
root = Tk()
l =ttk.Label(root, text="Starting...")
l.grid()
l.bind('<Enter>', lambda e: l.configure(text='Moved mouse inside'))
l.bind('<Leave>', lambda e: l.configure(text='Moved mouse outside'))
l.bind('<1>', lambda e: l.configure(text='Clicked left mouse button'))
l.bind('<Double-1>', lambda e: l.configure(text='Double clicked'))
l.bind('<B3-Motion>', lambda e: l.configure(text='right button drag to %d,%d' % (e.x, e.y)))
root.mainloop()
当我 运行 这个程序,并在按下 RMB 的同时将我的鼠标拖到屏幕上时,它给了我坐标,正如它在 "B3-Motion" 绑定中提到的那样。
在这种情况下,临时变量 "e" 到底指的是什么?
谢谢!
当您使用 widget.bind(...)
将函数绑定到事件时,tkinter 在调用函数时将始终将参数传递给表示事件的函数。通常这被命名为 event
,但有时缩写为 e
。
事件对象包含有关事件的信息,例如哪个小部件接收到事件、事件发生时光标的 x/y 坐标以及其他有用信息。
您可以在此处阅读有关该对象的更多信息:http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm .