Python 2.7 在PyQt中使用registerField

Python 2.7 在PyQt中使用registerField,python-2.7,pyqt,Python 2.7,Pyqt,我试图使用QWizardPage类的registerField,但是PyQt的文档并没有提供示例。我完全按照以下文档进行了操作: @pyqtSignature("QString") def on_nome1_textChanged(self, text): self.registerField("nome1", QLineEdit, text, textChanged()) 但我得到了以下错误: Traceback (most recent call last): File "te

我试图使用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

我做错了什么?

您应该先创建一个小部件,然后再将其注册为字段。大概是这样的:

myLineEdit=QtGui.QLineEdit()
myWizardPage.registerField("name",myLineEdit)
根据,如果使用的是
QLineEdit
,则不需要更多参数:

QWizard知道最常见的Qt小部件。对于这些(或他们的 子类),您不需要指定属性或changedSignal


你可能还有另一个问题。根据nome1\u textChanged上的方法名
,我猜只要相应的
lineEdit
文本更改,代码就会注册字段“name”

这不是字段的使用方式。该字段与小部件本身关联,而不仅仅是它的当前值。您应该只将小部件
lineEdit
注册一次作为字段“name”。然后,每当
lineEdit
文本更改时,该字段也将更改。要在向导的任何页面中访问
lineEdit
的当前值,只需执行以下操作:

textInLineEdit=myWizard("name")

这些文档提供了两个完整的示例:和(还有,但没有使用
registerField
)。小部件已经存在,我只是没有对代码提出疑问。我阅读了这部分文档,但不知道如何使用python。我使用
self.registerField(“name”,self.nome1)
更改了您所做的部分
myWizardPage.registerField(“name”,myLineEdit)
,它成功了。但是在
textInLineEdit=myWizard(“name”)
中,什么是
myWizard
?一个
QWizard页面
应该是一个
QWizard
页面,我将其命名为
myWizard
。字段不仅可以在定义它们的页面上访问,还可以在
QWizard