![](/img/trans.png)
[英]Combo box index value returning to default 0 when clicked radio buttons or change spin boxes in PyQt
[英]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.