访问PYQT应用程序中的常见数据对象



我在pyqt中编程了带有许多小部件和不同窗口等的GUI。GUI的数据存储在Python对象中。该对象应可以从程序中的每个小部件都能达到。我应该在哪里放这个对象?

现在,我将其用于程序主窗口的QMainWindow实例。问题在于,很难从深处嵌套的小部件到达QMainWindow对象。使用qapplication实例似乎要简单得多,因为您可以使用qtcore.qcoreapplication.instance()获得它(如本答案所示)。但是,我找不到任何其他示例鼓励您更改Qapplication类,所以我想知道是否真的应该使用它。

您建议什么方法?

正确的方法是将此数据/设置对象放在单独的模块中。然后,可以简单地导入它。理想情况下,模块(以及创建数据/设置对象的代码)应在很大程度上独立于应用程序的其余部分。

将数据/设置对象绑定到应用程序实例没有实际值,因为您仍然必须导入QApplicationqApp才能访问它。同一件事适用于QMainWindow-它将问题移至其他位置,并增加了不必要的间接层。这种方法的另一个大问题是,直到应用程序或主窗口的实例可用,数据/设置对象才能访问。通常,在应用程序的各个部分的初始化期间需要数据/设置对象,因此将其与特定的GUI元素联系起来很容易导致循环依赖性或其他订购问题。

我想这里的关键设计原理是松散的耦合:一旦您将数据/设置对象与GUI解耦,应用程序的其余部分可以随时随地访问它。

相关内容

  • 没有找到相关文章

最新更新