pyqt5-步长调节器
继承与 QWidget--->QAbstractSpinBox
QAbstractSpinBox
import sys from PyQt5.QtWidgets import QApplication, QWidget,QAbstractSpinBox,QPushButton from PyQt5.QtGui import QValidatorclass Myasb(QAbstractSpinBox): #子类化QAbstractSpinBoxdef __init__(self,parent=None,num="0",*args,**kwargs):super().__init__(parent,*args,**kwargs)self.lineEdit().setText(num) #设置初始值def stepEnabled(self): #实现控制上下按钮能用的方法#比如 0---100有效if int(self.text())==0:return QAbstractSpinBox.StepUpEnabled #上可用elif int(self.text())==100:return QAbstractSpinBox.StepDownEnabled #下可用elif int(self.text())>100 or int(self.text())<0:return QAbstractSpinBox.StepNone #都不能用else:return QAbstractSpinBox.StepUpEnabled | QAbstractSpinBox.StepDownEnabled #上下都可用def stepBy(self, p_int): #用户按下步长按钮时,会自动调用这个方法#用户按下按钮时的处理方法#p_int 用户点击步长按钮时,返回的增量-->1 或 -1s=int(self.text())+p_intself.lineEdit().setText(str(s)) #给控件中的单行文本编辑框设置文本def validate(self, p_str, p_int): #验证规则#p_str 是文本框的内容#p_int 是光标的位置#我要验证20--80的数据num=int(p_str)if num<20 : #如果是小于20就返回 暂不作判定是否通过验证return (QValidator.Intermediate, p_str, p_int)elif 20<=num <=80 :return (QValidator.Acceptable, p_str, p_int) #验证通过else:return (QValidator.Invalid, p_str, p_int) # 验证不通过passdef fixup(self, p_str):#修复函数num=int(p_str)if num>80 :return '80'if num<20:return '20'pass#看 https://www.cnblogs.com/liming19680104/p/10356797.htmlclass Demo(QWidget):def __init__(self):super().__init__()self.resize(300,300)btn=QPushButton('按钮',self)btn.clicked.connect(self.A)btn.move(50,100)asb=Myasb(self,'50') #实例化一个自定义的步长调节器self.asb = asbasb.move(50,50)asb.resize(100,30)asb.setAccelerated(True) #设置长按时是否加速#isAccelerated() -> bool 返回是否加速asb.setReadOnly(True) #设置只读--用户只能通过调节按钮改变数字,不能在编辑框中输入数值#isReadOnly() -> bool 返回是否只读#除了父类信号外,还有以下一个信号asb.editingFinished.connect(lambda :print('结束编辑')) #结束编辑时调用def A(self):#print(self.asb.text()) #返回文本编辑框中显示的文本print(self.asb.lineEdit().text()) # 返回文本编辑框中显示的文本#self.asb.lineEdit().setText('88') #设置文本编辑框中的文本#self.asb.setAlignment(Qt.AlignHCenter) #设置对齐方式#参数看 https://www.cnblogs.com/liming19680104/p/10353781.html#self.asb.setFrame(False) #设置是否有周边框架--默认是True#hasFrame() -> bool 返回是否有边框#self.asb.clear() #清空内容#单行文本编辑器的方法都可以使用if __name__ == '__main__':app = QApplication(sys.argv)demo = Demo()demo.show()sys.exit(app.exec_())
QSpinBox
样式:
主要处理整数和离散值集
import sys from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QSpinBoxclass SB(QSpinBox): #子类化,重写textFromValue方法--自定义展示格式def textFromValue(self, p_int): #每次改变数值,都会调用此函数#p_int 是编辑框中显示的值print('suzi',p_int)return str(p_int)+'*'+ str(p_int) #返回给编辑框的文本passclass Demo(QWidget):def __init__(self):super().__init__()self.resize(300,300)btn=QPushButton('按钮',self)btn.clicked.connect(self.A)btn.move(50,100)sb=SB(self) #实例化一个对象self.sb=sbsb.move(50,50)sb.resize(100,30)#sb.valueChanged.connect(self.B) #值改变时发出信号#会向槽函数传递一个整数值---文本框中改变后的值sb.valueChanged[str].connect(self.B) # 值改变时发出信号# 会向槽函数传递一个字符串---文本框中改变后的文本#设置数值范围--默认调整0到99范围之间的整数sb.setMaximum(50) #设置最大值#maximum() -> int 返回最大值sb.setMinimum(10) #设置最小值#minimum() -> int 返回最小值sb.setRange(5, 40) #设置数值区间 sb.setWrapping(True) #设置是否数值循环#wrapping() -> bool 返回是否数值循环 sb.setSingleStep(1) #设置步长#singleStep() -> int 返回步长 sb.setPrefix("周") #设置前缀#prefix() -> str 返回前缀sb.setSuffix("月") #设置后缀#suffix() -> str 返回后缀 sb.setSpecialValueText('最小值') #当数据到达最小值时, 会显示此字符串sb.setDisplayIntegerBase(16) #设置数据的进制---默认10进制#displayIntegerBase() -> int 返回进制def B(self,i):print('值改变了',i)passdef A(self):self.sb.setValue(25) # 设置值s = self.sb.value() # 返回值--十进制-不包括前缀后缀if __name__ == '__main__':app = QApplication(sys.argv)demo = Demo()demo.show()sys.exit(app.exec_())
s=self.sb.cleanText() #获取编辑框的内容--文本格式
QDoubleSpinBox-浮点
import sysfrom PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QDoubleSpinBox class SB(QDoubleSpinBox): #子类化,重写textFromValue方法--自定义展示格式 def textFromValue(self, p_int): #每次改变数值,都会调用此函数 #p_int 是编辑框中显示的值 return str(p_int)+'*'+ str(p_int) #返回给编辑框的文本 pass class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) btn=QPushButton('按钮',self) btn.clicked.connect(self.A) btn.move(50,100) sb=SB(self) #实例化一个对象 self.sb=sb sb.move(50,50) sb.resize(150,30) sb.setDecimals(2) #设置小数位数 #decimals() -> int 返回小数位数 #sb.valueChanged.connect(self.B) #值改变时发出信号 #会向槽函数传递一个浮点数---文本框中改变后的值 sb.valueChanged[str].connect(self.B) # 值改变时发出信号 # 会向槽函数传递一个字符串---文本框中改变后的文本 #设置数值范围--默认调整0.00到99.99范围之间的整数 sb.setMaximum(50) #设置最大值 #maximum() -> int 返回最大值 sb.setMinimum(10.55) #设置最小值 #minimum() -> int 返回最小值 sb.setRange(5.55, 40.55) #设置数值区间 sb.setWrapping(True) #设置是否数值循环 #wrapping() -> bool 返回是否数值循环 sb.setSingleStep(1.01) #设置步长 #singleStep() -> int 返回步长 sb.setPrefix("周") #设置前缀 #prefix() -> str 返回前缀 sb.setSuffix("月") #设置后缀 #suffix() -> str 返回后缀 sb.setSpecialValueText('最小值') #当数据到达最小值时, 会显示此字符串 def B(self,i): print('值改变了',i) pass def A(self): self.sb.setValue(20.55) # 设置值 s = self.sb.value() # 返回值--十进制-不包括前缀后缀 s=self.sb.cleanText() #获取编辑框的内容--文本格式 print('文本格式获取',s) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
天子骄龙
转载于:https://www.cnblogs.com/liming19680104/p/10358708.html
pyqt5-步长调节器相关推荐
- Python 小白从零开始 PyQt5 项目实战(4)基本控件
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始.不跳过一个细节,不漏掉一行代码,不省略一个例图. ...
- GUI学习之十四——QAbstractSpinBox学习总结
QAbstractSpinBox是一个抽象类,是将所有步长调节器的通用的功能抽象出了一个父类.虽然QAbstractSpinBox是一个抽象类,但是可以直接实例化使用.QAbstractSpinBox ...
- python gui编程 从入门到项目实战_python GUI编程 QT5开发项目实战
目录:├─01-PyQT简介及优势├─02-PyQT5开发环境搭建├─03-PyQT5应该学什么├─04-PyQT5库结构├─05-PyQT5程序基本结构分析├─06-PyQT5-Pycharm活动模 ...
- pythonqt项目_python GUI编程 QT5开发项目实战
目录:├─01-PyQT简介及优势├─02-PyQT5开发环境搭建├─03-PyQT5应该学什么├─04-PyQT5库结构├─05-PyQT5程序基本结构分析├─06-PyQT5-Pycharm活动模 ...
- NLP自然语言处理入门学习笔记(一)
文章目录 一.NLP简介 1.1.什么是自然语言处理 1.2.NLP发展简史 1.3.NLP应用场景 二.文本预处理 2.1.认识文本预处理 2.2.文本处理的基本方法 2.2.1.分词简介 2.2. ...
- pyqt5 输入确认_对PyQt5的输入对话框使用(QInputDialog)详解
PyQt5中QInputDialog的使用,Qt的QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,它提供了4种数据类型的输入: 1)字符串型(方法=QInputDialo ...
- pyqt5讲解3:QComboBox,QSpinBox,QSlider
下拉列表框QComboBox QComboBox是一个集按钮和下拉选项于一体的控件,也称为下拉列表框. 常用的方法 addItem() 添加一个下拉选项 addItems() 从列表中添加下拉选项 C ...
- Python 小白从零开始 PyQt5 项目实战(8)汇总篇(完整例程)
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战.不跳过一个细节,不漏掉一行代码,不省略一个例图. 本系列从软件安装.环境配置开始,介绍了基本应 ...
- 使用Opencv2+Pyqt5实现人脸识别视频马赛克
[视频马赛克系统]使用Opencv2+Pyqt5实现人脸识别视频马赛克功能 1.实现背景 2.开发资源.环境准备 3.实现目标 4.开发原理 6.编译实现 1.视频中人脸马赛克 2.电脑摄像头进行人脸 ...
最新文章
- Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法
- python opencv 腐蚀_opencv 图像的腐蚀(erode)和膨胀(dilate) 开运算以及闭运算
- I/O端口地址分配表(转)
- 学计算机需要多少内存,电脑内存多大才够用
- [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
- 100个微信小程序的源码公开分享
- 从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂)
- 如何使用Cisdem Video Converter在Mac上将大型 AVI 转换为 MP4
- Memcache监控小工具stats命令
- android view 屏幕外,安卓如何让View往屏幕外隐藏?
- [iOS][Question]performselector may cause a leak because its selector is unknown
- 机器学习算法的调试 —— 梯度检验(Gradient Checking)
- mybatis_07动态SQL_foreach循环
- Http请求URL长度限制
- Matlab作图格式设置
- Linux系统检测工具sysstat使用实战
- 论坛源码推荐(12月24日):OS X原生开源游戏模拟器OpenEmu iOS 7条形码扫描器
- echart地图飞线图
- 如何知道qq号手机号后三位_知道位
- Java学习笔记 (二十七) 使用NIO写文件
热门文章
- cressman插值_NCL自带常用插值函数集锦
- Lubuntu16.4.3定制教程
- Ubuntu14.04系统hostapd编译及使用
- 常见Spring异常
- 【java】调用System.gc()会发生什么?
- 【es】如何使用 Kerberos 确保您 Elasticsearch 集群的安全
- 【Flink】Zookeeper connection loss leads to Flink job restart
- 95-860-045-源码-定时器-InternalTimerService
- 95-38-030-Buffer-Java NIO中-关于DirectBuffer,HeapBuffer的疑问
- 【MySQL】MySQL负载均衡常见方法