继承与   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. 【gridview增删改查】数据库查询后lodop打印

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

  2. NCO

    NCO 摘自百度百科 (数字振荡器) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . 数字控制振荡器(NCO,numerically controlled oscillator)是 ...

  3. LOJ6045 雅礼集训 2017 Day8 价(最小割)

    由Hall定理,任意k种减肥药对应的药材数量>=k.考虑如何限制其恰好为k,可以将其看作是使对应的药材数量尽量少. 考虑最小割.建一个二分图,左边的点表示减肥药,右边的点表示药材.减肥药和其使用 ...

  4. es6箭头函数内部判断

    ES6闭包内部判断 需要判断i值和数组长度的关系,一旦大于i归0 未加入判断 setInterval((i => (() =>( this.$refs.danmu.render(ret.d ...

  5. POJ1611-The Suspects-并查集

    记录元素个数的并查集. 利用sz数组保存并查集的大小.每次union时,把小的集合并到大的中去,并更新sz数组. #include <cstdio> #include <algori ...

  6. 【AtCoder010】B - Boxes(差分)

    AtCoder Grand Contest 010 B题 题目链接 题意 n个盒子,第i个盒子有ai个石头. 重复这个步骤:选一个盒子i,每次从第i+j个盒子中移走j个石头,j从1到n,第n+k个盒子 ...

  7. 自学Linux Shell8.2-linux逻辑卷LVM管理

    点击返回 自学Linux命令行与Shell脚本之路 8.2-linux逻辑卷LVM管理 Linux逻辑卷管理器软件包用来通过将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间. 1. 逻辑卷L ...

  8. Raid卷详解

    #RAID卷 独立磁盘冗余阵列RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术.组成磁盘阵列的不同方式成为R ...

  9. CF848E Days of Floral Colours——DP+多项式求逆/分治NTT

    官方题解:http://codeforces.com/blog/entry/54233 就是由简入繁 1.序列处理,只考虑一个半圆 2.环形处理(其实这个就是多了旋转同构) 然后基于分割线邻居的跨越与 ...

  10. A1059. Prime Factors

    Given any positive integer N, you are supposed to find all of its prime factors, and write them in t ...