我正在尝试使用QWizardPage类的registerField,但PyQt的文档无助于提供示例。我按照文档完成了这些工作:
@pyqtSignature("QString")
def on_nome1_textChanged(self, text):
self.registerField("nome1", QLineEdit, text, textChanged())
但是我收到以下错误:
Traceback (most recent call last):
File "test.py", line 37, in on_nome1_textChanged
self.registerField("nome1", QLineEdit, text, textChanged())
NameError: global name 'textChanged' is not defined
我做错了什么?
答案 0 :(得分:2)
您可以在将其注册为字段之前创建窗口小部件。像这样:
myLineEdit=QtGui.QLineEdit()
myWizardPage.registerField("name",myLineEdit)
根据QT Doc,如果您使用QLineEdit
,则不需要更多参数:
QWizard知道最常见的Qt小部件。对于这些(或他们的 子类),您不需要指定属性或changedSignal。
您可能还有其他问题。从方法on_nome1_textChanged
的名称,我猜测代码注册字段" name"每当相应的lineEdit
文本发生变化时。
这不是字段的使用方式。该字段与窗口小部件本身相关联,而不仅仅是它的当前值。您应该将小部件lineEdit
注册为字段" name"只有一次。然后,每当lineEdit
文本发生更改时,该字段也会更改。要在向导的任何页面中访问lineEdit
的当前值,您只需执行以下操作:
textInLineEdit=myWizard("name")