处理多个窗口Qt4 python的最佳方法

时间:2016-12-25 09:07:14

标签: python qt user-interface pyqt pyqt4

我有两个主窗口,它们会一直运行并打开其他窗口。每个窗口都必须相互通信。所有的窗口都是用qt设计器创建的,当我在另一个问题中读到时,我不应该修改这些文件,所以我尝试创建一个新的类(通信器)来处理所有的工作。
构建这样一个项目的最佳方法是什么。那么我现在如何在这些窗口之间进行最佳通信,例如如果我按下“self.mainWindows_images”中的按钮'我想在self.mainWindows_classifier'

中做点什么
from classifier import Form as Form_classifier
from cnn_avg import Form as Form_cnn_avg
from images import Form as Form_images
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys


class Communicator():
    def __init__(self, parent=None):

        self.mainWindow_images = Form_images()
        self.mainWindow_images.show()

        self.mainWindow_classifier = Form_classifier()
        self.mainWindow_classifier.show()


def main():
    app = QApplication(sys.argv)
    app.setStyle('cleanlooks')
    comm = Communicator()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

由Qt Designer生成的一个窗口文件与附加的-w标志一样:

class Ui_Form(object):
def setupUi(self, Form):
    Form.setObjectName(_fromUtf8("Form"))
    Form.resize(1145, 654)
    ...

class Form(QtGui.QWidget, Ui_Form):
    def __init__(self, parent=None, f=QtCore.Qt.WindowFlags()):
        QtGui.QWidget.__init__(self, parent, f)
        self.setupUi(self)

我想做类似的事情并将setImage方法添加到mainWindow_classifier,因为我提到我不应该修改生成的qt python文件:

    self.mainWindow_classifier.pushButton.clicked.connect(self.setImage)

    def setImage(self):
            # change QLabel in self.mainWindow_images

0 个答案:

没有答案