我有两个主窗口,它们会一直运行并打开其他窗口。每个窗口都必须相互通信。所有的窗口都是用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