在PyQt中使用registerField

时间:2015-11-19 05:37:46

标签: 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 "test.py", line 37, in on_nome1_textChanged
    self.registerField("nome1", QLineEdit, text, textChanged())
NameError: global name 'textChanged' is not defined

我做错了什么?

1 个答案:

答案 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")