【发布时间】:2014-07-24 09:36:50
【问题描述】:
我正在 PySide 中制作一个简单的绘图应用程序。
主窗口有一个 chart 小部件,其中包含我的绘图 figure。
还有各种其他小部件和对话框需要访问chart 小部件以更改figure 的属性(外观、绘图数据等...)。
目前,我的小部件需要在初始化时将 chart 的实例传递给它们......这是一种让所有东西都与 chart 对话的糟糕方式,因为有这个引用的链被传递.
有没有办法让chart 小部件“全局”/可从任何小部件访问?
我曾考虑在主窗口之外创建一个 chart 单例 - 有什么理由认为这是个坏主意吗?
【问题讨论】:
-
把所有东西都放在一个类里,让
chart成为这个类的成员怎么样? -
这有什么帮助?
chart本身是一个类,继承自 matplotlib 的 FigureCanvas,我相信它是 QWidget 的子类。chart当前在我的Main类中实例化,这是 QMainWindow 的一个实例,因为这是chart小部件“驻留”的地方 -
这个想法是你在这个类中有方法作用于其他小部件并在需要时提供
chart,而不是让它成为每个小部件的成员。也许我误解了您的问题,但使用全局/单例的想法通常表明您可能需要重新考虑代码的结构。chart的目的是什么?也许您可以发布一些代码以使您的意图更清晰。