为了清晰起见,我将我的程序简化为两个小类:一个只有一个按钮的GUI,以及一个当点击时按钮变为蓝色的控制器。为了使GUI能够与控制器通信,它有自己的controller实例,但是如何让该控制器与GUI通信呢?在
class Controller():
def buttonClicked(self):
# btn['bg'] = 'blue' - how do I reference the button?
class GUI():
def __init__(self,master):
self.master = master
self.controller = Controller()
self.btn = tk.Button(master,command=self.controller.buttonClicked())
self.btn.pack()
root = tk.Tk()
GUI(root)
root.mainloop()
如果不使用其他类,那么可以将
buttonClicked
添加到GUI
,然后通过self.btn
引用按钮。在如果需要另一个类,则必须传递主类的引用才能使用其属性。在
通过将
self
传递给Controller
,Controller
的实例可以使用所有变量,包括按钮,并对其进行编辑。在在为按钮定义命令时,您还需要删除对
self.controller.buttonClicked
的调用,这是我在上面修改过的代码中完成的。在相关问题 更多 >
编程相关推荐