gpt4 book ai didi

python - 从深度嵌套的小部件访问 PySide PyQt MainWindow 或 Central Widget

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:14 25 4
gpt4 key购买 nike

向 PyQt 大师寻求一些最佳实践。

我有一些应用程序通用属性,我将它们定义为我的 QApplication 上的属性。在我的 MainWindow 初始化中,我为 MainWindow 分配了一个“app”属性。我想在深度嵌套的小部件中访问应用程序的变量。现在,我可以通过调用足够多的“parent()”调用来达到 MainWindow 级别。

这看起来很麻烦,我猜在这种情况下还有另一种最佳实践解决方案。以下是一些代码片段,可帮助您更好地理解该问题。

应用类

class App(QtGui.QApplication):

def __init__(self, sim, *args, **kwargs):
super(App, self).__init__(*args, **kwargs)
self.sim = sim
window = MW.BaseUI(digi_thread, app=self)

主窗口类

class BaseUI(QtGui.QMainWindow):
def __init__(self, digi_thread, app, parent=None):
super(BaseUI, self).__init__(parent)
self.app = app

从嵌套小部件(标签簿中的标签)进入主窗口的一些代码示例

@property
def main_window(self):
return self.parent().parent().parent().parent()

def some_function(self):
if self.main_window.app.sim:
print "in simulation mode"

我也不确定 centralWidget 是否与解决此类问题有关。

最佳答案

您始终可以通过 PySide.QtCore.QCoreApplication.instance() 访问当前应用程序实例。在 C++ 中,全局 qApp 变量提供相同的功能。

因此,无论您是在全局应用程序实例上设置 python 属性还是 Qt 属性,您始终可以访问它而无需通过任何层次结构。

关于python - 从深度嵌套的小部件访问 PySide PyQt MainWindow 或 Central Widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21388250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com