从未在Python / PyQt中定义它的(子)类访问GUI元素

时间:2012-11-14 17:25:17

标签: python pyqt

我有一个由Qt Designer创建的GUI。一个元素(“屏幕截图”)用作另一个类定义的占位符。它的Python代码翻译如下:

...

class Ui_endomess(object):

    def setupUi(self, endomess):
        ...
        self.screenshot = screenshot(self.centralwidget)
        ...        

from screenshot import screenshot

“screenshot”类看起来像这样:

...
class screenshot(QGraphicsView):
... 
    def some_function(self):
        ...

两者都由主脚本使用,具有以下结构:

...
from endomess_ui import Ui_endomess
...

class endomess(QMainWindow, Ui_endomess):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
    ...

def main(argv):
    app = QApplication(argv, True)
    wnd = endomess()
    wnd.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main(sys.argv)

当然,我可以在“endomess”类中操作GUI对象,如下所示:

self.calibrateButton.setEnabled(True)

我想要做的是从“screenshot”类中的函数操作GUI元素。我搞乱了“全球”电话,但我只是不知道该怎么做。这可能吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

qt-way将在screenshot类中定义一个信号,并将其连接到endomess类中的一个插槽,然后可以执行修改。

screenshot课程中,你也可以self.parent().parent()访问该对象(self.parent()应该是centralWidget,而父亲是endomess如果层次结构中的某些内容发生了变化,这可能会中断。