0

如果我有一个按钮执行与一个顶级窗口或根相关的处理程序 - 它可以修改另一个顶级窗口中的小部件吗?这样做的标准方法是什么?

4

2 回答 2

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()

您利用组合在小部件内部构建小部件。您应该避免的是处理程序对它实际上不拥有的全局小部件进行一些引用。

于 2012-07-15T00:41:43.917 回答
0

是的,按钮(或任何事件)的处理程序可以修改任何其他顶层中的任何小部件。只要该处理程序具有对小部件的引用,处理程序就可以对其进行修改。在这方面没有限制。

于 2012-07-15T12:10:34.747 回答