有没有办法通过单独的类将Python方法绑定到Tkinter小部件?

有没有办法通过单独的类将Python方法绑定到Tkinter小部件?,python,tkinter,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()

有没有办法通过单独的类将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)构造函数的类不同的类中

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

command=self.cb(self.var)

使程序显然无法正常工作


编辑:问题已经回答了!多谢各位

是的,您可以这样做。
command=self.cb(self.var)
的问题是,您不能将参数传递给command中的方法,只能传递给方法本身,但是您可以使用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()

是的,通过另一个类的实例。但是如果您想访问这个类的实例变量,您需要将
self
传递给另一个类的回调。acw1668-您能通过一个代码示例演示一下吗?我想我在上面的编辑说明中提到了这一点。当我实例化一个对象并试图通过绑定的tkinter方法将该类的实例变量传递到该对象时,程序无法工作。