我正在PySide中制作一个简单的绘图应用程序。
主窗口有一个chart
小部件,其中包含我的情节figure
。
还有其他各种小部件和对话框需要访问chart
小部件来改变figure
的属性(外观,绘图数据等...)。
目前,我的小部件需要在初始化时将chart
的实例传递给它们...这是允许所有内容与chart
对话的可怕方式,因为有这样的链参考传递。
有没有办法让chart
小部件'全局'/可以从任何小部件访问?
我考虑过在主窗口之外创建一个chart
的单例 - 为什么这会是一个坏主意?
答案 0 :(得分:2)
另一种选择是通过signals and slots进行通信,因此主窗口有一些插槽(绘制,绘制,......),其他每个小部件都有一个信号(我想要绘制它)和然后你连接信号和插槽。这可能是解耦最多的解决方案,我更喜欢它。
您可以使用全局。没问题。 Global variables are bad本身,但如果这不打扰你,那就去吧。
最后 user3419537 的想法似乎是一件好事。您可以将属于一起的所有窗口小部件捆绑在一个类中,然后作为类成员访问图表窗口小部件。这可能比全球更好。