继承与   QWidget--->QAbstractSpinBox

QAbstractSpinBox

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QAbstractSpinBox,QPushButton
from PyQt5.QtGui import QValidator class Myasb(QAbstractSpinBox): #子类化QAbstractSpinBox
def __init__(self,parent=None,num="",*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 或 -1
s=int(self.text())+p_int
self.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) # 验证不通过
pass def fixup(self, p_str):#修复函数
num=int(p_str)
if num>80 :
return ''
if num<20:
return ''
pass #看 https://www.cnblogs.com/liming19680104/p/10356797.html class 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,'') #实例化一个自定义的步长调节器
self.asb = asb
asb.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,QSpinBox class SB(QSpinBox): #子类化,重写textFromValue方法--自定义展示格式
def textFromValue(self, p_int): #每次改变数值,都会调用此函数
#p_int 是编辑框中显示的值
print('suzi',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(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)
pass
def 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 sys
from 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_())
 

天子骄龙

整数数字调节框QSpinBox的更多相关文章

  1. QDoubleSpinBox浮点型数字调节框

    样式: import sys from PyQt5.QtWidgets import QApplication, QWidget, QDoubleSpinBox class Demo(QWidget) ...

  2. C# 全选中数字文本框内容

    /// <summary>        /// 全选中数字文本框内容        /// </summary>        /// <param name=&quo ...

  3. easyUI之numberspinner数字微调框

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字

    /**  * 判断是否为汉字  *   * @param str  * @return  */ public static boolean isGBK(String str) {  char[] ch ...

  5. WPF 自定义数字文本框:NumericBox

    由于项目需要,最近写了一个数字输入文本框,在此作个备忘. 1.代码调用 <controls:NumericBox Height="32" Width="80&quo ...

  6. 数字调节控件JSpinner的使用

    ---------------siwuxie095                         工程名:TestUI 包名:com.siwuxie095.ui 类名:TestList.java   ...

  7. PyQt(Python+Qt)学习随笔:QSpinBox数字设定部件简介

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在输入部件中,数字调整框QSpinBox是个很实用 ...

  8. 第15.43节、PyQt输入部件:QAbstractSpinBox派生类QSpinBox、 QDoubleSpinBox、QDateTimeEdit、QDateEdit和QTimeEdit功能简介

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Spin B ...

  9. js限制文本框只能输入整数或者带小数点[转]

    这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...

随机推荐

  1. 装CentOS 系统

    一. 二. 三. 四. 五. 六. 七. 八. 九. 十. 十一. 十二. 十三. 十四. 十五. 十六. 十七. 十八. setup设置

  2. Ubuntu 16.04 root环境变量不生效问题解决方案

    在Ubuntu 16.04中配置JDK环境变量,但是在切换到root时不生效 . 在/etc/profile中添加如下: export JAVA_HOME=/opt/java/jdk1..0_151 ...

  3. python之enumerate函数:获取列表中每个元素的索引和值

    源码举例: def enumerate_fn(): ''' enumerate函数:获取每个元素的索引和值 :return:打印每个元素的索引和值 ''' list = ['] for index, ...

  4. Nginx REWRITE阶段

    rewrite_log on ;#每次rewrite都会记录一条记录在errorlog里 error_log logs/xxx.log notice; location /first { rewrit ...

  5. Python中正则表达式的巧妙使用

    字符串的匹配查询 re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果.该函数的参数含义如下: findall(pattern, string, ...

  6. docker --swarm启动2375端口监听

    首先要下载swarm docker pull swarm 然后停掉docker服务: service docker stop 然后启动deamon: sudo dockerd -H tcp://0.0 ...

  7. Codeforces Round #418 (Div. 2) B. An express train to reveries

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  8. windows下安装PyTorch0.4.0

    PyTorch框架,据说2018.4.25刚刚上架windows,安个玩玩 我的环境: windows 10 anaconda虚拟环境python3.6 cuda9.1 cudnn7 pytorch  ...

  9. Domino 邮箱服务器接收不存在的邮箱账号的邮件

    背景: domino邮箱服务器需要设置多个邮件账号邮件转到同一个邮箱账号. 比如:现在没有了 abc@mail.com 的邮箱账号.但是当用户发邮件给它的时候就发给Support@mail.com 原 ...

  10. 【BZOJ1856】[SCOI2010]字符串(组合数学)

    [BZOJ1856][SCOI2010]字符串(组合数学) 题面 BZOJ 洛谷 题解 把放一个\(1\)看做在平面直角坐标系上沿着\(x\)正半轴走一步,放一个\(0\)看做往\(y\)轴正半轴走一 ...