QDoubleSpinBox
- 描述
- 浮点类型步长调节器
0.00 - 99.99 1.00 % - 99.99 %
- 既可以通过步长调节器调整数据, 也可以通过文本框直接编辑
- 继承自:QAbstractSpinBox
- 功能作用
- 构造函数
QDoubleSpinBox(parent: QWidget = None) # 默认功能:步长为1.0, 调整0.00到99.99范围之间的浮点数步长调节器
- 设置数值范围
setMaximum(max_num) # 设置最大值 maximum() -> float # 获取最大值 setMinimum(min_num) # 设置最小值 minimum() -> float # 获取最小值 setRange(min_num, max_num) # 设置数值区间
- 数值循环
- 设置数值达到最大/小时, 跳转到最小/大
setWrapping(bool) wrapping() -> bool
- 设置步长
setSingleStep(step_float) # 设置步长调节器, 单步步长值 singleStep() -> float
- 前缀和后缀
setPrefix("$") # 设置前缀作为展示 prefix() -> str # 获取前缀内容 setSuffix("%") # 设置后缀作为展示 suffix() -> str # 获取后缀内容
- 最小值特殊文本
setSpecialValueText(str) # 设置最小值特殊文本 # 父类中的方法:当数据到达最小值时, 会显示此字符串
- 设置小数位数
setDecimals(int) # 设置支持更高精度的数据 decimals() -> int
- 设置和获取数值
setValue(float) # 设置文本内容 # 如果设置的小数位数过多, 则会按照真实位数四舍五入 value() -> float # 获取真实数值,不包含前缀和后缀 cleanText() -> str # 获取文本框的文本,不包括任何前缀,后缀或前导或尾随空格 text() # 获取文本框显示的文本内容
- 自定义显示格式
- 显示数值之前, 调用此方法, 转换成对应的格式字符串进行显示
- 子类化QDoubleSprinBox对象,重写textFromValue方法
- 控件最终显示的内容是该方法的返回值
textFromValue(self, p_int) -> format_str
- 可用信号
# 继承父类QAbstractSpinBox的信号 valueChanged(self, float) [signal] # 值发生改变时候发射该信号,传递浮点类型参数值:value valueChanged(self, str) [signal] # 值发生改变时候发射该信号,传递字符串类型参数值:text # 这两个信号名称是一样的,仅仅是发射时传递的参数类型不一致(一个传的是float浮点类型,一个传的是String文本字符型) # 在使用的时候需要通过 valueChanged[str].connect() 的方式来指定
- 示例代码
- 示例1:QDoubleSpinBox 创建使用
from PyQt5.Qt import * import sys class Windows(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QDoubleSpinBox-创建使用') self.resize(500, 500) self.widget_list() def widget_list(self): self.add_widget() def btn_cao(self): self.设置数值范围() self.设置小数位() self.设置数值循环() self.设置步长() self.设置前缀和后缀() self.最小值特殊文本() self.设置和获取数值() def add_widget(self): dsb = QDoubleSpinBox(self) dsb.resize(150, 30) dsb.move(100, 100) btn = QPushButton(self) btn.resize(150, 30) btn.move(100, 150) self.dsb = dsb self.btn = btn self.btn.clicked.connect(self.btn_cao) self.btn.setText('设置数值范围') def 设置数值范围(self): # self.dsb.setMaximum(10.0) # self.dsb.setMinimum(2.0) self.dsb.setRange(2.0, 15.0) def 设置小数位(self): self.dsb.setDecimals(4) def 设置数值循环(self): self.dsb.setWrapping(True) print(self.dsb.wrapping()) def 设置步长(self): self.dsb.setSingleStep(0.0001) print(self.dsb.singleStep()) def 设置前缀和后缀(self): self.dsb.setPrefix('¥:') self.dsb.setSuffix('元') def 最小值特殊文本(self): self.dsb.setSpecialValueText('最小值了...') def 设置和获取数值(self): self.dsb.setValue(8.00001) print('value:',self.dsb.value()) print('cleanText:',self.dsb.cleanText()) print('text:',self.dsb.text()) if __name__ == '__main__': app = QApplication(sys.argv) window = Windows() window.show() sys.exit(app.exec_())