zoukankan      html  css  js  c++  java
  • 【PyQt5-Qt Designer】QDoubleSpinBox-小数微调框

    QDoubleSpinBox-小数微调框

    总体说明

    大部分的总体说明和QSpinBox的差不多(详见:《PyQt5:微调框1》),这里主要把有差别的地方谈一下(三点)。

    1. QDoubleSpinBox会舍去数字,以便以当前精度显示。在QDoubleSpinBox小数设置为2,调用setValue(2.555)将导致value()返回2.56。
    2. spinbox的默认精度为2位小数,但可以使用setDecimals()更改。
    3. 除了最终的前缀和后缀内容外,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_())
    QDoubleSpinBox微调框-案例

    这个例子我们设置了精度值,最小2,最大9,通过滑块进行调节。涉及滑块的部分内容,请参考《PyQt5:小车快跑(滑块的使用)》

    self.sp = QDoubleSpinBox(self)
    self.sp.setGeometry(10,50,100,20)
    self.sp.setRange(0,20)
    self.sp.setSingleStep(0.1)

    新建一个QDoubleSpinBox对象,设置最小最大值范围(0-20),单步步长0.1。

    self.sl.valueChanged.connect(self.spinbox_changevalue)
    def spinbox_changevalue(self,value):
        if value <= 7:
            self.lb.setText("QDoubleSpinBox精度设置为:" + str(value+2))
            self.sp.setDecimals(value+2)

    这个就是我们拖动滑块的时候,在标签上显示精度值大小。因为QDoubleSpinBox对象的精度是从2开始,但是滑块的值是从0开始,所以我们给滑块的值加2,并给将其设置为QDoubleSpinBox的精度。

  • 相关阅读:
    堆排序
    分治与递归的结合-------快速排序
    递归算法--写实例----阶乘问题---整数划分问题
    PAT A+B格式
    学习C#的第一天
    C#快捷键
    字符串匹配算法(在字符串T中查找是否有与字符串P相同的子串)
    linux中nohup实时查看启动日志的解决办法
    linux 产看pycharm 安装路径
    pip requirements.txt
  • 原文地址:https://www.cnblogs.com/XJT2018/p/10219995.html
Copyright © 2011-2022 走看看