在PyQt应用程序中访问公共数据对象

本杰明

我有一个在PyQt中编程的GUI,其中包含许多小部件和不同的窗口等。GUI的数据存储在python对象中。程序中的每个小部件都应可以访问此对象。我应该把这个物体放在哪里?

现在,我在用于程序主窗口的QMainWindow实例中拥有它。问题在于,很难从深度嵌套的小部件中访问QMainWindow对象。为此,使用QApplication实例似乎要简单得多,因为您可以使用QtCore.QCoreApplication.instance()获得它(如本答案所示)。但是,我找不到其他鼓励您更改QApplication类的示例,所以我想知道是否真的应该以这种方式使用它。

您会建议哪种方法?

ekhumoro

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

将数据/设置对象绑定到应用程序实例并没有真正的价值,因为您仍然必须导入QApplicationqApp访问它。同样的事情也适用于QMainWindow-它只是将问题转移到其他位置,并增加了不必要的间接层。这种方法的另一个大问题是,只有在应用程序或主窗口的实例可用之前,才能访问数据/设置对象。通常,在应用程序各个部分的初始化过程中将需要数据/设置对象,因此将其绑定到特定的GUI元素很容易导致循环依赖或其他排序问题。

我想关键的设计原则,这里是松耦合:一旦你分离数据/设置从GUI对象,应用程序的其它部分可以访问它无论它是必需的,无论何时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Polymer应用程序中的Firebase数据库结构-性能和用户/组/公共访问

如何在整个应用程序中访问配置对象?

从Java Web应用程序中的Serlvet访问对象的实例

从Flask应用程序中的外部应用程序上下文访问应用程序对象

从 WPF 应用程序中的代码访问 xml 数据

在MVVM应用程序中访问核心数据栈

AngularJS-在整个应用程序中访问Promise数据

从Ruby on Rails应用程序中的模型访问数据

如何从Ember应用程序模板中的路由访问数据?

如何访问缓存中的数据星火流应用程序?

在React应用程序中从Firebase项目访问数据的问题

如何获取特定登录名的公共Facebook页面数据(应用程序)到我的android应用程序中?

无法访问我的 django 应用程序数据库中的对象,请帮助 ;-;

应用程序代理访问环境对象

从公共移动应用程序收集数据

如何创建可在应用程序范围内访问的上下文对象以在数据访问中存储当前用户详细信息?

在Android应用程序中访问localhost

从QML中访问应用程序版本

Web 应用程序中的访问控制

红宝石应用程序中公共目录的目的?

在应用程序中获取WinRT设备的公共IP地址

如何在Shopify公共应用程序中添加JavaScript

在Kotlin中的伴随对象中访问应用程序上下文

如何在我的应用程序中访问字典中的数组对象属性?

无法从ASP NET应用程序中托管的WCF数据服务访问数据库

如何使用Azure函数应用程序从Blob存储中读取数据并访问数据

启动后如何访问应用程序中任何位置的对象

如何在vue.js应用程序中访问外部json文件对象

将在应用程序的许多类中访问和更新的对象的良好实践?