有没有办法通过SEPARATE类将Python方法绑定到Tkinter小部件



有没有办法通过SEPARATE类将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"——是否可以将它写在与持有definit(self,master(构造函数的类不同的类中?

EDIT:通过以下操作将变量self.var传递到cb方法中:

command=self.cb(self.var)

显然使程序运行不正常。

编辑:问题已经回答了!非常感谢!

是的,你可以。command=self.cb(self.var)的问题是,你不能将参数传递给命令中的方法,只能传递给方法本身,但你可以使用lambda函数来解决这个问题,就像在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()

最新更新