继承与   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. zookeeper和kafka的安装

    一.安装zookeeper yum install -y java ##安装jdk1.6版本以上 wget http://mirror.bit.edu.cn/apache/zookeeper/zook ...

  2. C#實現XML的增刪查改

    命名空間:using System.Xml; 1.查找某個節點是否存在: private XmlDocument xmldoc; private string mod="1"; p ...

  3. Python——反射

    反射的定义:使用字符串类型的名字 去操作变量 hasattr 函数 与getatter配合使用,用来判断变量是否存在 if hasatter(my,'a'):#如果为真执行 getatter(my,' ...

  4. Dictionary字典

    泛型,键值对 Dictionary<int,string> dic=new Dictionary<int,string>(); dic.Add(,"张三") ...

  5. window service 开发

    为了便于window service的调试和开发. 我整理了一下代码,方便大家查阅 App.config 设置启动时间 timerStart-10点 interval-3600000  1小时检查一次 ...

  6. c#计算 坐标点与坐标点之间的距离

    PointF p = new PointF(116.305671f, 39.966051f); PointF p2 = new PointF(116.595428f, 39.828327f); dou ...

  7. LOJ #6270. 数据结构板子题 (离线+树状数组)

    题意 有 \(n\) 个区间,第 \(i\) 个区间是 \([l_i,r_i]\) ,它的长度是 \(r_i-l_i\) . 有 \(q\) 个询问,每个询问给定 \(L,R,K\) ,询问被 \([ ...

  8. Android8.0运行时权限策略变化和适配方案

    版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.comAndroid8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过AndroidS ...

  9. Prometheus-operator架构详解

    Prometheus是一个开源的系统监视和警报工具.一款非常优秀的监控工具.监控方案:Prometheus 提供了数据搜集.存储.处理.可视化和告警一套完整的解决方案. Prometheus的关键特性 ...

  10. CF 1000

    水爆了...... 当然不是题目水,而是我水. 第一题,看完题目我稍微惊了一下,有点难度(并不). 开个map,先加后减,统计正数即可. 第二题,看完我冷汗就流下来了,有点难啊,这是B难度? 趴床上推 ...