总体说明
大部分的总体说明和QSpinBox的差不多(详见:《PyQt5:微调框1》),这里主要把有差别的地方谈一下(三点)。
- QDoubleSpinBox会舍去数字,以便以当前精度显示。在QDoubleSpinBox小数设置为2,调用setValue(2.555)将导致value()返回2.56。
- spinbox的默认精度为2位小数,但可以使用setDecimals()更改。
- 除了最终的前缀和后缀内容外,QDoubleSpinBox的显示值限制为18个字符。这个限制是用来保持微调时即使是非常大的值也可以使用。
更多详细的介绍请见官网:QDoubleSpinBox Class
QDoubleSpinBox小例子
先来看看具体例子的效果吧。
效果如下:
参考:
https://zhuanlan.zhihu.com/p/31530835
完整代码:
1 from PyQt5.QtWidgets import (QApplication,QWidget,QDoubleSpinBox,QLabel,QSlider,QGridLayout) 2 from PyQt5.QtCore import Qt 3 import sys 4 5 class Example(QWidget): 6 def __init__(self): 7 super(Example, self).__init__() 8 self.initUI() 9 10 def initUI(self): 11 self.setGeometry(300,300,300,200) 12 self.setWindowTitle("QDoubleSpinBox微调框") 13 gridLayout = QGridLayout() 14 self.dsb = QDoubleSpinBox() 15 self.dsb.setRange(0.0,10.0) 16 17 self.sld = QSlider(Qt.Vertical,self) 18 self.sld.setRange(0,10) 19 self.sld.setSingleStep(1) 20 self.sld.setTickPosition(True) 21 22 self.label = QLabel("设置精度为2",self) 23 gridLayout.addWidget(self.label,0,0,1,1) 24 gridLayout.addWidget(self.dsb,0,1,1,2) 25 gridLayout.addWidget(self.sld,1,1,2,1) 26 self.setLayout(gridLayout) 27 28 self.sld.valueChanged.connect(self.dsb_Valuechange) 29 30 def dsb_Valuechange(self,value): 31 if value >= 2 : 32 self.label.setText("设置精度为%s"%value) 33 self.dsb.setDecimals(value) 34 self.dsb.setSingleStep(1/(10**value)) 35 36 37 if __name__ == '__main__': 38 app = QApplication(sys.argv) 39 ex = Example() 40 ex.show() 41 sys.exit(app.exec_())