我正在尝试使用PySide的QWizard :: validateCurrentPage。 我的向导类是使用PySide.QtUiTools.QUiLoader从.ui文件加载的
我创建了一个应该覆盖内置QWizard :: validateCurrentPage:
的函数def validateDataPage(self):
return False
现在我试图覆盖这样的内置方法:
self.wizard = uiloader.load("registrationwizard.ui")
f = types.MethodType(validateDataPage,
self.wizard,
QtGui.QWizard)
self.wizard.validateCurrentPage = f
我在调试器中看到validateCurrentPage已被替换:
self.wizard.validateCurrentPage
<bound method QWizard.validateDataPage of <PySide.QtGui.QWizard object at 0x04CC31C0>>
我可以从调试器调用它,但是当我点击&#34; next&#34;页。
我做错了什么,在构造对象时无法覆盖虚函数?
答案 0 :(得分:0)
我很确定它应该可行,因为你的方式是Python中Adding a Method to an Existing Object的规范方式。
我做了一个小例子,它似乎对我有用。
import types
from PySide import QtGui
def overload(self):
print(self.validateCurrentPage)
return False
app = QtGui.QApplication([])
wizard = QtGui.QWizard()
wizard.validateCurrentPage = types.MethodType(overload, wizard)
wizard.addPage(QtGui.QWizardPage())
wizard.addPage(QtGui.QWizardPage())
wizard.show()
app.exec_()
打印
<bound method QWizard.overload of <PySide.QtGui.QWizard object at xx>>