我们在上一章讲了步长调节器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]() 

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

GUI学习之十六——QSpinBox学习总结的更多相关文章

  1. C++学习基础十六-- 函数学习笔记

    C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则 ...

  2. 201771010134杨其菊《面向对象程序设计(java)》第十六周学习总结

    第十六周学习总结 第一部分:理论知识 1. 程序是一段静态的代码,它是应用程序执行的蓝本.进程是程序的一次动态执行,它对应了从代码加载.执行至执行完毕的一个完整过程.操作系统为每个进程分配一段独立的内 ...

  3. 201871010123-吴丽丽 《面向对象程序设计(Java)》第十六周学习总结

    201871010123-吴丽丽 <面向对象程序设计(Java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  4. 201271050130-滕江南-《面向对象程序设计(java)》第十六周学习总结

    201271050130-滕江南-<面向对象程序设计(java)>第十六周学习总结 博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.c ...

  5. 201871010111-刘佳华《面向对象程序设计(java)》第十六周学习总结

    学号-姓名<面向对象程序设计(java)>第十六周学习总结 实验十四  应用程序归档与线程初步 实验时间 2019-12-12 第一部分:理论知识总结 1.程序与进程的概念 ‐程序是一段静 ...

  6. 201871010106-丁宣元 《面向对象程序设计(java)》第十六周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十六周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  7. 201871010107-公海瑜《面向对象程序设计(java)》第十六周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第十六周学习总结            项目                            内容   这个作业属于哪 ...

  8. 201871010133-赵永军《面向对象程序设计(java)》第十六周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  9. 201871010136 -赵艳强《面向对象程序设计(java)》第十六周学习总结

    201871010136-赵艳强<面向对象程序设计(java)>第十六周学习总结   项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnbl ...

随机推荐

  1. mysql update语句与limit的结合使用

    有时候有需要批量更新数据表中从多少行到多少行的某个字段的值 mysql的update语句只支持更新前多少行,不支持从某行到另一行,比如 UPDATE tb_name SET column_name=' ...

  2. TiDB单机安装测试

    TiDB单机安装测试 CentOS7.3安装MySQL5.6 1:下载TiDB安装包# cd /opt/source# wget http://download.pingcap.org/tidb-la ...

  3. SOUI中对象的生命周期管理

    C++程序员最难的一环就是处理内存泄漏. 很多情况下,一个对象在一个模块里分配了内存,忘记了释放,或者在另一个模块里释放都会导致内存相关的问题. SOUI中大部分暴露在应用层的对象都使用类似COM的引 ...

  4. 【ASK】设置网卡启动遇到的事!

    上次动笔是16年的事情了,一晃3年过去了.算了,不感慨了.直奔主题吧. 1.今天朋友要把一批win10的机器设置成网卡启动. 2.网卡是intel集成的. 3.按照主板说明已经设置成功. 4.通过wi ...

  5. debian ssh/sftp

    检查是否安装了openssh dpkg --get-selections | grep openssh 安装命令 sudo apt-get install openssh-server 安装成功的字样 ...

  6. Linux几个命令的升级替代品

    grep => ack, agack和ag是两个文本搜索工具,比自带的grep要好用得多.在指定目录下搜索文本时,它们不需要像grep那样指定各种命令行选项,输出结果也会包含文件名和行号,并且会 ...

  7. CSS3—— 多列 用户界面 图片 按钮

    多列 将文本内容设计成像报纸一样的多列布局 多列创建 间隙 列边框 边框颜色+宽度 指定列的宽度 指定元素跨越多少列 用户界面 由用户调整元素大小[谷歌浏览器等] 以确切的方式定义适应某个区域的具体内 ...

  8. pyinstaller如何将自己写的模块一并打包到exe中

    使用pyinstaller命令 pyinstaller -F main.py 打包时,若mian.py代码中存在引入自己写的模块,而打包成exe文件时,并不会自动引入自己写的模块,打包成功后,点击打开 ...

  9. 【组策略】1.组策略介绍group policy

    组策略介绍group policy 高效学习法,念念不忘,必有回响. 分享一个高效学习思维,潜意识思考.就是在您没有大量时间的情况下,学习十分钟. 然后离开去完成别的事情的时候,大脑潜意识中还会继续思 ...

  10. xmake v2.2.2, 让C/C++拥有包依赖自动构建

    前言 历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理. 而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,有兴 ...