本文主要是介绍python --- Tkinter事件绑定参数的传递,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于python3 Tkinter事件的处理
一般Tkinter事件绑定函数是不带参数的(bind会默认带event事件参数)
但遇到确实需要传递参数的时候怎么办呢?
参数的传递
使用你们函数lambda或中间函数来解决
from tkinter import *def handler_button():paramStr.set('button:no param ')def param_button(param):paramStr.set(f'button:{param}')# 事件处理函数
def handler(event):paramStr.set('event:no param ')# 事件处理函数带参数
def handler_args(event, param):paramStr.set(f'event:{param}')# 中介函数
def handler_adaptor(fun, **kwds):return lambda event, fun=fun, kwds=kwds: fun(event, **kwds)if __name__ == '__main__':root = Tk()paramStr = StringVar()paramStr.set('button:')Label(root, textvariable=paramStr).pack()btn1 = Button(root, text='无参按钮', command=handler_button) # 默认左键点击btn2 = Button(root, text='带参按钮1', command=lambda: param_button("param"))btn1.bind('<Button-3>', handler) # 右键点击# 带参绑定方法1,使用lambda btn1.bind('<Double-Button-1>', lambda event: handler_args(event, "double left")) # 左键双击# 带参绑定方法2,使用中间函数,但要注意指定参数名btn1.bind('<Double-Button-3>', handler_adaptor(handler_args, param="double right")) # 右键双击btn1.pack()btn2.pack()root.mainloop()
这篇关于python --- Tkinter事件绑定参数的传递的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!