我有一个用于可视化一些 python 对象的 PyQt 程序。我想显示多个对象,每个对象都在自己的窗口中。
在 PyQt4 中实现多窗口应用程序的最佳方法是什么?
目前我有以下内容:
from PyQt4 import QtGui
class MainWindow(QtGui.QMainWindow):
windowList = []
def __init__(self, animal):
pass
def addwindow(self, animal)
win = MainWindow(animal)
windowList.append(win)
if __name__=="__main__":
import sys
app = QtGui.QApplication(sys.argv)
win = QMainWindow(dog)
win.addWindow(fish)
win.addWindow(cat)
app.exec_()
但是,这种方法并不令人满意,因为当我尝试将 MultipleWindows 部分分解到它自己的类中时,我遇到了问题。例如:
class MultiWindows(QtGui.QMainWindow):
windowList = []
def __init__(self, param):
raise NotImplementedError()
def addwindow(self, param)
win = MainWindow(param) # How to call the initializer of the subclass from here?
windowList.append(win)
class PlanetApp(MultiWindows):
def __init__(self, planet):
pass
class AnimalApp(MultiWindows):
def __init__(self, planet):
pass
if __name__=="__main__":
import sys
app = QtGui.QApplication(sys.argv)
win = PlanetApp(mercury)
win.addWindow(venus)
win.addWindow(jupiter)
app.exec_()
上面的代码将调用 MainWindow 类的初始化程序,而不是相应子类的初始化程序,因此会抛出异常。
如何调用子类的初始化程序?有没有更优雅的方法来做到这一点?