我有一个由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元素。我搞乱了“全球”电话,但我只是不知道该怎么做。这可能吗?
提前感谢您的帮助!
答案 0 :(得分:2)
qt-way将在screenshot
类中定义一个信号,并将其连接到endomess
类中的一个插槽,然后可以执行修改。
在screenshot
课程中,你也可以self.parent().parent()
访问该对象(self.parent()应该是centralWidget
,而父亲是endomess
如果层次结构中的某些内容发生了变化,这可能会中断。