【PyQt5-Qt Designer】QSpinBox-微调框


QSpinBox-微调框

QSpinBox类提供了一个微调框小部件。

QSpinBox被设计为处理整数和离散值集合(例如,月份名称);使用QDoubleSpinBox 可以作为浮点数的调整。

QSpinBox允许用户通过点击上/下按钮或按下键盘上的/下来选择一个值来增加/减少当前显示的值。用户也可以手动输入值。微调框支持整数值,

但可以用与 validate(),textFromValue()和valueFromText() 扩展为使用不同的字符串。

每次值改变QSpinBox发出两个valueChanged()信号,一个提供一个int,另一个提供一个QString。 QString重载提供了prefix()和suffix()两个值。当前值可以通过value()获取,并通过setValue()设置。 

单击向上/向下按钮或使用键盘的向上和向下箭头将按照sizeStep()的大小逐步增加或减少当前值。如果你想改变这个行为,你可以重新实现函数stepBy()。

最小值和最大值以及步长可以使用其中一个构造函数来设置,稍后可以使用setMinimum(),setMaximum()和setSingleStep(True)来更改。

大多数微调框是定向的,但是QSpinBox也可以例外,即如果范围是0-99并且当前值是99,则如果wrapping()被设置为True,则单击“up”将给出0。如果你想循环行为,使用setWrapping()。

所显示的值可以预先加上任意字符串,例如表示货币或计量单位。

更多详细的介绍请见官网:QSpinBox Class | Qt Widgets 5.9 

QSpinBox小例子

先来看看具体例子的效果吧:

效果如下:

参考:

QRegExp Class | Qt Core 5.9

if regExp.exactMatch(str):
    return int(regExp.cap(1))
else:
    return 0

要是找了匹配的字符床,返回由第n个子表达式捕获的文本。cap()匹配的元素的顺序如下。第一个元素cap(0)是整个匹配的字符串。cap(1)是第一个捕获括号的文本,cap(2)是第二个文本,依此类推。明显我们这里是想匹配“\d+”,然后将其转换成数字。

def textFromValue(self,num):
    return "{0} x {1}".format(num,num)

这里就是重写textFromValue()函数,显示成“数字 x 数字”的形式。