为什么不使用对话框?在Qt中,除非要使用停靠栏等,否则不需要使用主窗口。使用对话框将具有相同的效果。
我还可以在逻辑上看到一个问题,即您希望您的超类正在调用其子级的构造函数,这当然可以是任何类型。我建议您像下面这样重写它: ``
class MultiWindows(QtGui.QMainWindow): def __init__(self, param): self.__windows = [] def addwindow(self, window): self.__windows.append(window) def show(): for current_child_window in self.__windows: current_child_window.exec_() # probably show will do the same trickclass PlanetApp(QtGui.QDialog): def __init__(self, parent, planet): QtGui.QDialog.__init__(self, parent) # do cool stuff hereclass AnimalApp(QtGui.QDialog): def __init__(self, parent, animal): QtGui.QDialog.__init__(self, parent) # do cool stuff hereif __name__=="__main__": import sys # really need this here?? app = QtGui.QApplication(sys.argv) jupiter = PlanetApp(None, "jupiter") venus = PlanetApp(None, "venus") windows = MultiWindows() windows.addWindow(jupiter) windows.addWindow(venus) windows.show() app.exec_()
期望超类知道要在其子类的 init 中使用的参数不是一个好主意,因为确实很难确保所有构造函数都相同(也许动物对话框/窗口采用diff参数) 。
希望能帮助到你。



