如果我有一个按钮来执行与一个顶层窗口或根相关的处理程序 - 它可以修改另一个顶层的窗口小部件吗?这样做的标准方法是什么?
答案 0 :(得分:1)
我在Tkinter没有经验,但我确信它与PyQt4没什么不同。通常,您需要父子关系。父窗口小部件包含子窗口小部件,可以修改它们。孩子们通常不应该对父母了解太多,并且会通过信号或事件进行交流。
当处理程序触发时,应该可以自由修改它知道的小部件。也就是说,如果您的顶级窗口有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()
您可以使用合成来在窗口小部件中构建窗口小部件。你应该避免的是一个处理程序,它引用了一个它实际上不拥有的全局小部件。
答案 1 :(得分:0)
是的,按钮(或任何事件)的处理程序可以修改任何其他顶层的任何窗口小部件。只要该处理程序具有对窗口小部件的引用,处理程序就可以对其进行修改。在这方面没有任何限制。