有很多方法可以做到这一点,但我更喜欢使用一个中央“窗口管理器”来充当两个窗口的所有者和交互通信中心。下面是一个需要根据您的需要进行调整的技术示例。请注意,我使用Qt5。我测试了Qt5,然后试图在没有测试的情况下翻译成Qt4。它应该是对的,但可能需要一点软性。在from PyQt4 import QtCore, QtGui
class WindowManager(QtCore.QObject):
"""
Inheriting from QObject has benefits.
For instance, the WindowManager can not have pyQtSignal members, if needed
"""
def __init__(self):
super(WindowManager, self).__init__()
self.firstWindow = FirstWindow(self)
self.secondWindow = SecondWindow(self)
self.firstWindow.show()
self.secondWindow.show()
class FirstWindow(QtGui.QMainWindow):
def __init__(self, manager):
super(FirstWindow, self).__init__()
self.manager = manager
self.mainWidget = QtGui.QWidget()
self.setCentralWidget(self.mainWidget)
self.mainLayout = QtGui.QVBox