python - 有没有办法通过单独的类将 Python 方法绑定到 Tkinter 小部件?
问题描述
有没有办法通过单独的类将 Python 方法绑定到 Tkinter 小部件?(即,这些方法与 tkinter 小部件位于不同的类中)?
特别是 Checkbutton() 小部件?
例子:
def __init__(self, master):
self.var = IntVar()
c = Checkbutton(master, text="Enable a tab", variable=self.var, command=self.cb)
c.pack()
def cb(self, event)
print("Variable is", self.var.get())
...对于第二种方法“cb” - 是否可以将它写在与持有 def init (self, master) 构造函数的类不同的类中?
编辑:通过执行以下操作将变量 self.var 传递给 cb 方法:
command=self.cb(self.var)
显然使程序工作不正常。
编辑:问题已得到解答!非常感谢 !
解决方案
是的,你大约。问题command=self.cb(self.var)
是您不能将参数传递给命令中的方法,只能传递方法本身,但您可以使用 lambda 函数解决此问题,例如 in command=lambda: self.cb(self.var)
。这是一个可重现的小例子:
import tkinter as tk
class Printer(object):
def print_text(self, text):
print(text)
class Button(tk.Button):
def __init__(self, parent):
other = Printer()
super(Button, self).__init__(parent, text='press', command=lambda: other.print_text('test'))
root = tk.Tk()
Button(root).pack()
root.mainloop()
推荐阅读
- ruby - 如何将两个参数插入到 watir :: 浏览器( Browser.new() 之后的代理和用户代理)
- button - 如何在 Google 表格中创建一个按钮来切换目标单元格中的值 1 和 0?
- spring-webflux - 我应该使用同步 Mono::map 还是异步 Mono::flatMap?
- graph - 如何使用边缘标签在 Gremlin 中执行遍历
- c# - 如何将 appsettings.json 中的 json 设置解析为 c# .netcore 中的类
- perl - Perl:当子/管道的文件句柄被别名时,关闭子进程失败
- excel - 从角度的字节[]导出到excel
- javascript - Shopify 产品页面 - 将光滑滑块更新为选定的变体
- python - 使用 python 列表的硬币条纹概率
- java - 将 mysql 连接器版本从 5.1.42 升级到 8.0