我们在上一章讲了步长调节器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. @WebService这个标签的作用是什么

    当实现 Web Service 时,@WebService 注释标记 Java 类:实现 Web Service 接口时,标记服务端点接口(SEI). (声明webservice服务) 要点: • 实 ...

  2. 在HTML标签元素中,绑定JS函数

    <a onclick="ShowMsg(this)" id="myA" href="#">按钮</a> //JS方法 ...

  3. legend3---2、网站的代码里面的/也是代表根目录

    legend3---2.网站的代码里面的/也是代表根目录 一.总结 一句话总结: 不过这个根目录在public下面 1.mysql删除数据库命令? drop database <数据库名> ...

  4. orm练习题

    表关系图 models.py from django.db import models # Create your models here. class Teacher(models.Model): ...

  5. js中的相等

    概述 今天学习 jest,看文档的时候发现 jest 用到了 Object.is(),以前没有见过,所以记录下来,供以后开发时参考,相信对其他人也有用. 注意:Object.is的文档在这里 Obje ...

  6. vs2010发布网站时有些文件没有发布出去的解决办法。

    项目中包含了一些ttf字体文件做为图标使用,可是发布时发现生成的目录中没有这个文件,这种情况这么设置一下就可以解决: 1,在文件上点击右键,选择“属性”. 2,在弹出的属性窗口中,更改“生成操作”为“ ...

  7. TCP中SYN洪水攻击

    在查看TCP标识位SYN时,顺便关注了一下SYN Flood,从网上查阅一些资料加以整理,SYN洪水攻击利用TCP三次握手. 1.SYN洪水介绍 当一个系统(客户端C)尝试和一个提供了服务的系统(服务 ...

  8. Lesson 4 The double life of Alfred Bloggs

    There are two type of people in the society. People who do manual works can higher payment than peop ...

  9. 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况

    PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")) ...

  10. CVE 2019 0708 安装重启之后 可能造成 手动IP地址丢失.

    1. 最近两天发现 更新了微软的CVE 2019-0708的补丁之后 之前设置的手动ip地址会变成 自动获取, 造成ip地址丢失.. 我昨天遇到两个, 今天同事又遇到一个.微软做补丁也不走心啊..