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

1、概述

Designer输入部件中的Spin Box、Double Spin Box、Time Edit、Date Edit、Date/Time Edit分别对应类QSpinBox、 QDoubleSpinBox、QDateTimeEdit、QDateEdit和QTimeEdit,这些类都是从QAbstractSpinBox类派生的子类,其中QDateEdit和QTimeEdit又是从QDateTimeEdit派生的。html

QAbstractSpinBox提供了一个可调整的数字设定的基础部件和一个显示当前数字的设定值的编辑部件。类的主要属性以下:python

  • text属性:显示在QAbstractSpinBox中的文本
  • wrapping属性:wrapping属性用于控制部件显示值达到最小值时再向下调整是否容许调整后直接跳转到最大值,反之亦然
  • specialValueText属性:用于控制当达到最小值是显示数字仍是显示本属性设置的文本,若是设置了本属性则达到最小值显示本属性文本
  • accelerated属性:控制当持续按下调整按钮时,调整数字是否加速调整,便是否按压时间越久数字增大或减少的速度越快
  • 部分外观属性:包括frame、buttonSymbols、alignment、showGroupSeparator等

2、QSpinBox数字设定部件

在输入部件中,数字调整框QSpinBox是个很实用的从连续数字中取值的一个部件。QSpinBox的父类是QAbstractSpinBox,QAbstractSpinBox的父类是QWidget。它具备以下特色:web

  1. 能够设定调整数字的范围,包括最小值和最大值,请参考maximum属性和maximum属性;
  2. 能够设置数字调整时的变化步长,请参数singleStep属性;
  3. 能够设置数字达到最大值或最小值是否跳转到最小值或最大值构成一个数字环,请参考父类QAbstractSpinBox的wrapping属性;
  4. 能够设置是否点击调整按钮时间越长数字变化越快,请参考父类QAbstractSpinBox的accelerated属性;
  5. 能够设置数字前是否加文字前缀或数字后加文字后缀,如表示月份的数字后加‘月’、表示星期的数字前加‘周’,请参考prefix属性和suffix属性;
  6. 能够启用数字是否适应当前值的状况跳跃性变化,这个跳跃性变化是指步长会以当前值除10取整以后、再将首位换成1其他位换成0的数字,即这个步长数字是10的幂值(含0幂值1和1幂值10),不过这个须要用到属性5.12版本新增的属性stepType;
  7. 能够设定显示数字的进制,任何整数进制均可以,如3进制、99进制等,能够参考displayIntegerBase属性;
  8. 能够调整按钮的外观和数字对齐方式,请参考父类QAbstractSpinBox的alignment属性、buttonSymbols属性、frame属性、showGroupSeparator;
  9. 能够在数字达到最小值显示一个特殊文本,如一个缩放比例范围是0-1000,前缀为%,设置特殊文本为“根据窗口大小自动缩放”,则当数字达到0时,在数字调整框显示的内容不是"%0",而是“根据窗口大小自动缩放”,请参考QAbstractSpinBox的specialValueText属性。

具体属性和方法不进行详细介绍,请参考官方文档便可。app

下图是一个用2个QSpinBox对象表示年月的示例svg

在这里插入图片描述

3、QDoubleSpinBox浮点数字设定部件

QDoubleSpinBox一样是从父类QAbstractSpinBox派生的子类,其功能与QSpinBox数字调整框基本相似,能够说QSpinBox数字调整框有的功能在QDoubleSpinBox基本一样存在,只是QDoubleSpinBox浮点数调整框以下方面有所变化:学习

  1. 取值数字支持小数,小数位数可定义,请参考QDoubleSpinBox的decimals属性;
  2. 步长支持小数,请参考QDoubleSpinBox的 singleStep属性;
  3. 不支持进制设置。

其余功能与QSpinBox数字调整框彻底相同,具体相关功能比较简单,请参考官方文档。
下图是一个以2个QDoubleSpinBox部件实现的汇率兑换金额换算:
在这里插入图片描述.net

4、QDateTimeEdit日期时间编辑部件

Designer输入部件中,Date/Time Edit是个日期时间编辑框,对应类QDateTimeEdit,该类是从父类QAbstractSpinBox派生。orm

QDateTimeEdit具备以下功能:xml

  • 能够设置最小日期和最大日期,请参考maximumDateTime属性、minimumDateTime属性、maximumTime属性、minimTime属性、 minimumDate属性、 maximumDate属性以及setDateTimeRange()、setDateRange()、setTimeRange()、clearMinimumDateTime()、clearMinimumDate()、clearMaximumDate()、clearMinimumTime()、 clearMaximumTime()方法
  • 能够设置日期和时间显示的格式,请参考displayFormat属性和fromString方法
  • 能够经过左右光标键或tab、shift+tab键在对应年、月、日、时、分、秒的字段间移动,能够经过上下光标键或直接输入数字调整当前字段的值,能够经过currentSection属性访问当前字段,能够经过currentSectionIndex方法获取光标在显示字符串的位置
  • 能够经过构造方法或setDateTime方法设置显示的时间,当前时间能够经过QDateTime.currentDateTime()方法获取
  • 能够经过time、date和dateTime属性访问QDateTimeEdit日期时间编辑框的当前时间、日期
  • 能够经过timeSpec 属性访问QDateTimeEdit日期时间编辑框的当前时区
  • 能够设置在点击调整日期时间时是否显示一个日历弹出窗,请参考calendarPopup属性。有弹窗时弹窗以下:

在这里插入图片描述
无弹窗时能够点击下图中的上下按钮修改所在字段的值:htm

在这里插入图片描述

5、QDateEdit日期编辑部件和QTimeEdit时间编辑部件

Designer输入部件中,Date Edit和Time Edit是日期和时间编辑部件,对应类QDateEdit和QTimeEdit,这2个类都是从父类QDateTimeEdit派生的。

相对于父类QDateTimeEdit,QDateEdit和QTimeEdit的变化点主要只有以下3点:

  • 界面显示上,QDateTimeEdit能够有完整的年月日时分秒字段,而QDateEdit只显示年月日三个字段,QTimeEdit只显示时分秒三个字段
  • QDateTimeEdit的一些属性根据两个子类的不一样有以下默认值的调整,如QDateEdit的displayFormat属性只显示日期相关字段,QTimeEdit只显示时间相关字段,currentSection属性也是相似
  • 构造方法QDateEdit和QTimeEdit有专有构造方法,参数也是与各自对应的参数

跟老猿学Python、学5G!