我想创造出可以在不同应用程序和它们的API中被用来创建UI的类。 为此我创建了一个名为ui.py模块。 这里面模块如下:
from PyQt4 import QtGui
def CreateGui(uiFile, parent=None):
print "Ui build.."
def GetUiObject(uiClass):
pUI = uiClass.PARENT
class ParentUI(pUI):
def __init__(self, uiFile):
CreateGui(uiFile, self)
def __call__(self, cls):
for func in uiClass.__dict__:
setattr(cls, func, uiClass.__dict__[func])
return ParentUI
@GetUiObject
class UI(object):
PARENT = QtGui.QMainWindow
def __init__(self, uiFile):
CreateGui(uiFile)
在我的管道模块模块,用于应用程序:
from ui import UI
UI.PARENT = QtGui.QWidget
class Tool_UI(UI):
def __init__(self, uiFile):
super(Tool_UI, self).__init__(uiFile)
print "In Application"
app = QtGui.QApplication(sys.argv)
A = Tool_UI("C:/test/testUi.ui")
A.CreateGui()
但我得到以下错误:
Ui build..
In Application
Traceback (most recent call last):
File "C:/test/maxUi.py", line 13, in <module>
A.CreateGui()
RuntimeError: super-class __init__() of type Tool_UI was never called
什么是我错了?
编辑:
cpburnz解答了为什么代码示数,但它仍然没有工作。 我想用另一个具有不同的基地,以取代类。 我打开了一个新的问题与我的问题的一个更好的描述和不同的解决方案我想( 如何变基或动态地用不同的基类替换类 )。