栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Tkinter将带有参数的函数绑定到小部件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Tkinter将带有参数的函数绑定到小部件

使用创建绑定时

bind
,Tkinter会自动添加一个包含有关事件信息的参数。您需要在
rand_func
定义或调用方式中考虑这一点。

使用属性时 包括此参数

command
。在每种情况下如何调用函数或函数如何解释其参数时,必须小心考虑这个额外的参数。

这是一种

lambda
在绑定中使用的解决方案,仅在使用
bind
命令时才接受额外事件,而不将其传递给最终命令。

import tkinter as tkclass SampleApp(tk.Tk):    def __init__(self, *args, **kwargs):        tk.Tk.__init__(self, *args, **kwargs)        self.frame = tk.frame(self)        self.frame.pack()        self.button = tk.Button(self.frame, text="click me",       command=lambda a=1, b=2, c=3:self.rand_func(a, b, c))        self.button.pack()        self.frame.bind("<Return>",   lambda event, a=10, b=20, c=30:       self.rand_func(a, b, c))        # make sure the frame has focus so the binding will work        self.frame.focus_set()    def rand_func(self, a, b, c):        print "self:", self, "a:", a, "b:", b, "c:", c        print (a+b+c)app = SampleApp()app.mainloop()

话虽如此,绑定到框架很少是正确的事情。通常,框架不会具有键盘焦点,并且除非具有焦点,否则绑定永远不会触发。如果要设置全局绑定,则应绑定到“所有”绑定标签(使用bind_all方法)或顶级小部件。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640505.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号