繁体   English   中英

PyQt5双旋转盒不返回任何值

[英]PyQt5 double spin box returning none value

我有这个:(有类方法,是QWizard的固有方法)

def getForms(self):
    return [
        (
            QtWidgets.QLabel("Name"),
            QtWidgets.QLineEdit()
        ),
        (
            QtWidgets.QLabel("Roll"),
            QtWidgets.QDoubleSpinBox()
        )
    ]

def registerFields(self, page, forms):
    page.registerField("name*", forms[0][1])
    page.registerField("roll", forms[1][1])

在代码的其他地方

id = self.currentId()
    if id == 1:
        print self.field("name") # this rightly give me a name from LineEdit
        print self.field("roll") # but this give me just None, why?

当我改变

QtWidgets.QDoubleSpinBox()

QtWidgets.QSpinBox()

线:

print self.field("roll")

工作正常。

为什么我得到None而不是double value?

编辑

我刚刚注意到,当我尝试将“ roll”字段设为必填项时。

page.registerField("roll*", forms[1][1])

而且我在程序中填写了“ spinbox”,我无法单击“ next”(下一个已禁用)。 我在程序中的窗体中有Spinbox。 我可以在那里设置值。 但这似乎此字段未与QWizard(?)连接?

QWizardPage类仅具有一些小部件类型的内部知识。 注册它不知道的窗口小部件时,您需要指定用于读取值的属性以及更改值时发出的信号(字符串)。

对于QDoubleSpinBox这将是:

page.registerField("roll", forms[1][1], "value", "valueChanged")

QWizardPage知道的小部件类型列表在此处的c ++文档中列出。

您还可以使用QWizard的方法在全球范围内注册此信息,这样就不必在每次调用registerField()时都进行指定。 为此,请致电:

my_wizard.setDefaultProperty("QDoubleSpinBox", "value", "valueChanged")

注意:这是向导的方法,而不是页面的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM