Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从未在Python/PyQt中定义的(子)类访问GUI元素_Python_Pyqt - Fatal编程技术网

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

从未在Python/PyQt中定义的(子)类访问GUI元素,python,pyqt,Python,Pyqt,我有一个由Qt设计器创建的GUI。一个元素(“屏幕截图”)用作另一个类定义的占位符。它的Python代码翻译如下所示: ... class Ui_endomess(object): def setupUi(self, endomess): ... self.screenshot = screenshot(self.centralwidget) ... from screenshot import screenshot

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

...

class Ui_endomess(object):

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

from screenshot import screenshot
...
class screenshot(QGraphicsView):
... 
    def some_function(self):
        ...
self.calibrateButton.setEnabled(True)
“屏幕截图”类如下所示:

...

class Ui_endomess(object):

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

from screenshot import screenshot
...
class screenshot(QGraphicsView):
... 
    def some_function(self):
        ...
self.calibrateButton.setEnabled(True)
两者都由具有以下结构的主脚本使用:

...
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对象,如下所示:

...

class Ui_endomess(object):

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

from screenshot import screenshot
...
class screenshot(QGraphicsView):
... 
    def some_function(self):
        ...
self.calibrateButton.setEnabled(True)
我想做的是从“screenshot”类中的函数操作GUI元素。我到处乱打“全球”电话,但我就是不知道怎么做。这可能吗


提前感谢您的帮助

qt方法是在
屏幕截图
类中定义一个信号,并将其连接到
endomise
类中的一个插槽,然后该插槽可以执行修改

屏幕截图
类中,您还可以作为
self.parent().parent()
访问对象(self.parent()应该是
中心Widget
,它是
endomise
实例的父对象),但如果层次结构中的某些内容发生更改,这可能会中断