Python Tkinter顶层通信
如果我有一个按钮,它可以执行与一个顶级窗口或根相关的处理程序,那么它可以修改另一个顶级窗口中的小部件吗?做这件事的标准方法是什么?我在Tkinter方面没有经验,但我确信它与PyQt4没有什么不同。通常,您需要父子关系。父窗口小部件包含子窗口小部件并可以修改它们。孩子们通常不应该太了解他们的父母,而应该通过信号或事件进行交流 当处理程序启动时,它应该可以自由地修改它所知道的小部件。也就是说,如果顶级窗口有10个小部件,并且包含作为方法的处理程序,那么应该允许该方法通过Python Tkinter顶层通信,python,tkinter,Python,Tkinter,如果我有一个按钮,它可以执行与一个顶级窗口或根相关的处理程序,那么它可以修改另一个顶级窗口中的小部件吗?做这件事的标准方法是什么?我在Tkinter方面没有经验,但我确信它与PyQt4没有什么不同。通常,您需要父子关系。父窗口小部件包含子窗口小部件并可以修改它们。孩子们通常不应该太了解他们的父母,而应该通过信号或事件进行交流 当处理程序启动时,它应该可以自由地修改它所知道的小部件。也就是说,如果顶级窗口有10个小部件,并且包含作为方法的处理程序,那么应该允许该方法通过self属性修改这10个小部
self
属性修改这10个小部件
比如:
class MyTopWindow:
def __init__(self):
self.widget1 = Widget
self.widget2 = Widget
self.button = Button
#self.button.clicked -> self.handler
def handler(self):
self.widget1.someAttribute = 1
button.click() # -> handler()
您可以使用组合在小部件内部构建小部件。您应该避免的是处理程序引用一个它实际上并不拥有的全局小部件。是的,按钮(或任何事件)的处理程序可以修改任何其他顶级中的任何小部件。只要该处理程序具有对小部件的引用,该处理程序就可以修改它。在这方面没有任何限制 一个深思熟虑的答案——也许是正确的答案。我想回答一个我真的不应该回答的问题。不,这是一个很好的问题。当您在结构的顶部有一个抽象的“消息传递”层时,它可能会令人困惑。