继承与   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. python之使用heapq()函数计算列表中数值大小

    # heapq函数:计算列表最大几个值和最小几个值 # 语法:heapq.nlargest(n, list,[key]) # n表示最大或最小的几个: list为分析的对象: key为排序关键字,非必 ...

  2. 【gridview增删改查】数据库查询后lodop打印

    ASP.NET中使用gridview可以很容易的把需要的数据动态显示在前台,还可以在表格里加入列进行增删改查,每次点击的时候重新加载数据,gridview也提供了分页等功能,还有一些模版让显示在前台的 ...

  3. BZOJ4891 TJOI2017龙舟(Polllard-Rho)

    对给定模数分解质因数后约分即可.依然常数巨大过不了. #include<iostream> #include<cstdio> #include<cmath> #in ...

  4. Java生成数独函数

    突然想写一下生成算法.代码注释的比较多,应该比较好理解 使用了递归 import java.util.ArrayList; public class Sudoku { static int sudok ...

  5. LightOJ 1030 【概率DP求期望】

    借鉴自:https://www.cnblogs.com/keyboarder-zsq/p/6216762.html 题意:n个格子,每个格子有一个值.从1开始,每次扔6个面的骰子,扔出几点就往前几步, ...

  6. 洛谷P4768 [NOI2018]归程(可持久化并查集,最短路)

    闲话 一个蒟蒻,在网络同步赛上进行了这样的表演-- T2组合计数不会,T3字符串数据结构不会,于是爆肝T1 一开始以为整个地图都有车,然后写了2h+的树套树,终于发现样例过不去 然后写可持久化并查集D ...

  7. 【题解】 bzoj3036: 绿豆蛙的归宿 (期望dp)

    题面戳我 Solution 反向建图跑拓扑排序,顺便处理\(dp\) 假设某条边是\(u \rightarrow v (dis)\) ,那么转移方程就是\(dp[v]+=(dp[u]+dis)/in[ ...

  8. [luogu4403][bzoj1271][BJWC2008]秦腾与教学评估

    题目描述 在秦腾进入北京大学学习的第一个学期,就不幸遇到了前所未有的教学评估.在教学评估期间,同学们被要求八点起床,十一点回宿舍睡觉,不准旷课,上课不准迟到,上课不准睡觉--甚至连著名的北大三角地也在 ...

  9. POJ P3352 Road Construction 解题报告

    P3352 Road Construction 描述 这几乎是夏季,这意味着它几乎是夏季施工时间!今年,负责岛屿热带岛屿天堂道路的优秀人士,希望修复和升级岛上各个旅游景点之间的各种道路. 道路本身也很 ...

  10. python 忽略警告

    import warningswarnings.filterwarnings("ignore")看起来整洁一点...