我们在上一章讲了步长调节器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. 打开远程桌面时总提示无法打开连接文件default.rdp

    删除C:\Users\Administrator\Documents\default.rdp,再启动远程就好了 http://www.chahushequ.com/read-topic-94-2fa9 ...

  2. MySQL Online DDL工具

    MySQL在线表结构变更工具 MySQL的大表表结构变更常用的解决方案无外乎三种: 一是利用Percona的pt-online-schema-change,Facebook的OSC等三方工具, 二是在 ...

  3. EDM概念之A/B分类测试法

    相信很多情况下大家都会看到A/B分类测试法这个专业术语,下面博主简要介绍下什么是A/B分类测试法. 这里的A和B主要是指两种不同版本的电子邮件.一般来说,可以将用户分为同等数量的两组,一组发送A版本, ...

  4. jenkins不展示set Build Description Setter插件

    问题描述: 1.jenkins 已下载 set build descripteion ,并且配置过,可以在构建历史中展示就用二维码 2.问题:构建历史中不展示二维码了,如图: 总是排查: 1.首先想到 ...

  5. MAVEN打包时跳过Junit测试

    我们知道,通常情况下使用maven package命令打包时,会自动执行test包下的各个单元测试. 这是因为spring-boot-maven-plugin插件已经集成了maven-surefire ...

  6. 一文学会Go - 2 数据结构与算法实践篇

    练习:使用go语言实现冒泡排序和归并排序 冒泡排序是所有排序算法中最简单的,练习时先实现它: func bubbleSort(array []int) { n := len(array) ; j &l ...

  7. Java ——扩展:内部类 匿名内部类 IO file 设计模式

    内部类的拓展 定义类or方法内部的类 最外层的类只能使用public和默认修饰 class Demo { class A { } public static void main(String[] ar ...

  8. HTML5——新表单元素 表单属性 语义元素

    表单元素 新的表单元素 datalist——输入域选项列表 keygen——提供一种验证用户的可靠方法 output——不同类型的输出,比如计算或脚本输出 表单属性 <form> / &l ...

  9. linux 通配符与正则表达式

    linux通配符和三剑客(grep.awk.sed)正则表达式是不一样的 通配符一般用户命令行bash环境,而linux正则表达式用于awk.grep.sed

  10. vue组件命名和传值

    一.vue组件命名: 组件有好几种命名方式, 可以使用 component-vue (短横线分隔命名).componentVue  (驼峰式命名) 或ComponentVue  (单词首字母) 因为h ...