我们在上一章讲了步长调节器QAbstractSpinBox,这一节来讲一下它的一个子类:QSpinBox

一.描述

  QSpinBox是一个主要处理整数和离散值集合的步长调节器控件,它允许用户通过单击增减按钮或用键盘输入值来实现当前显示值的改变。它主要显示整数,也可以通过自定义显示一些离散的值集(周一~周日)

  QSpinBox继承了QAbstractSpinBox,可以使用父类的各种API。

二.功能

  1.构造函数

from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_SetUp()
def UI_SetUp(self):
sb = QSpinBox(self)
sb.resize(150,50)
sb.move(100,100)
self.sb = sb
pass if __name__ =='__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

创建QSpinBox控件

创建的控件在默认情况下数值范围是从0到99

  2.最大值和最小值

QSpinBox.setMinimum()        #设定最大值
QSpinBox.setMaximum() #设定最小值
QSpinBox.setRange(min,max) #设定范围
QSpinBox.maximum() #获取最大值
QSpinBox.minimum() #获取最小值

  3.数值循环

  可以通过设置数值循环,在数据到最大值时可以直接转到最小值(反之也可以)

QSpinBox.setWrapping(True)        #启用数值循环
QSpinBox.wrapping() #是否启用数值循环

  4.步长设置

QSpinBox.setWrapping()            #设定步长
QSpinBox.singleStep() #获取步长——>str

设定好步长每次加减的数值按设定值操作。

  5.前缀和后缀和最小值特殊文本

QSpinBox.setPrefix()             #设定前缀
QSpinBox.setSuffix() #设定后缀
QSpinBox.prefix() #获取前缀——>str
QSpinBox.suffix() #获取后缀——>str

加了前缀或后缀只改变数值,前后缀不变化

还可以在最小值时显示一个固定的字符,比如0元的时候定义为免费

QSpinBox.setSpecialValueText('')                #设置最小值对应文本
QSpinBox.specialValueText() #获取最小值对应文本——>str

在最小值时显示设定的文本,设定后是不会显示前后缀字符串的。(这个用法是父类的)

  6.进制更改

QSpinBox.setDisplayIntegerBase(int)                #设置进制
QSpinBox.displayIntegerBase() #获取进制——>str

这里设置的进制是不光常用的二进制、八进制和十进制的,任何一个整数是都可以的(还可以大于16,不过实际没什么意义,0-F后可以继续)

  7.数值的设置和获取

QSpinBox.setValue()          #设定值
QSpinBox.value() #获取int的值

这里用的value获取的是int对应的值,不包含前后缀,最小值时不对应特殊文本

  8.自定义展示格式

我们可以通过重写下面的函数来实现自定义的格式显示

class SB(QSpinBox):
def textFromValue(self, v: int):
pass

这个函数传递了当前的整数值,

from PyQt5.Qt import *
import sys
class SB(QSpinBox):
def textFromValue(self, v: int): #自定义展示格式
week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六',]
weekday = week[v]
return weekday class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_SetUp()
def UI_SetUp(self):
sb = SB(self) #调用的是自定义的QSpinBox控件
sb.resize(100,30)
sb.move(100,100)
sb.setRange(0,6)
self.sb = sb
pass if __name__ =='__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

自定义样式显示

这样就显示的是周日到周六了。

三.信号

除了继承父类的

QSpinBox.editingFinished()

结束编辑信号外,它还带有另外一种信号

QSpinBox.valueChanged()

它传递有int类型的信号,还可以重构一下发送字符串类型的数据

QSpinBox.valueChanged[str]() 

发送字符串时是按照当前显示的状态发送的,包含有前后缀以及自定义的显示类型。

最新文章

  1. 怎么使用CDR中排列对象功能
  2. Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)
  3. 输出内容(document.write)四种写法
  4. GNU make 总结 (五)
  5. log4net保存到数据库系列三、代码中xml配置log4net
  6. 七,WPF的元素绑定
  7. 【转】Ansys 13.0 flexlm not running完美解决方案
  8. python3 解析apk图标
  9. Deep Learning (Python, C, C++, Java, Scala, Go)
  10. mvp架构解析
  11. ionic2 App搭建(三)
  12. 离线安装mysql数据库
  13. JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建
  14. topcoder srm 575 div1
  15. Day5_Py模块_1
  16. 自学python之路(day3)
  17. day1--一个简单的登录接口
  18. nodemailer + express + h5 拖拽文件上传 实现发送邮件
  19. Week4-作业1:《构建之法》第四章、第十七章 阅读笔记与思考
  20. 转:Ubuntu16.04下配置php+vscode+xdebug开发环境

热门文章

  1. Make jQuery throw error when it doesn't match an element
  2. 思科端口聚合的命令是channel-group
  3. Git-Runoob:Git 工作区、暂存区和版本库
  4. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_02maven依赖管理的概念
  5. python学习笔记:(五)列表与元组的异同
  6. fiddler之模拟请求超时和弱网模式
  7. cmd 中文显示错误,解决办法
  8. JDK7新特性
  9. Oracle,Mysql 获取用户下所有表名,获取表所有的列名及数据类型
  10. laradock 部署 php 环境 和 laravel/lumen 框架