一、微调框(QSpinBox)
- QSpinBox 类提供了一个微调框小部件,可以输入或使用上下箭头选择数字
- 说明
-
QSpinBox 被设计为处理整数和离散值集合(例如,月份名称);使用 QDoubleSpinBox 可以作为浮点数的调整
-
数值调整:
- QSpinBox允许用户通过点击上/下按钮或按下键盘上、下方向键选择一个值来增加/减少当前显示的值。用户也可以手动输入值
- 微调框支持整数值,但可以用与validate(),textFromValue()和valueFromText()扩展为使用不同的字符串
-
关于信号:valueChanged()
- 每次值改变QSpinBox发出两个valueChanged()信号:一个提供一个int,另一个提供一个QString
- QString重载提供了prefix()和suffix()两个值。当前值可以通过value()获取,并通过setValue()设置
-
单击向上/向下按钮或使用键盘的向上和向下箭头将按照sizeStep()的大小逐步增加或减少当前值
-
如果想改变这个行为,可以重新实现函数stepBy()。最小值和最大值以及步长可以使用其中一个构造函数来设置,稍后可以使用setMinimum(),setMaximum()和setSingleStep(True)来更改
-
大多数微调框是定向的,但是QSpinBox也可以例外,即如果范围是0-99并且当前值是99,则如果wrapping()被设置为True,则单击“up”将给出0。如果想循环行为,使用setWrapping()
- 获取数字
- 通过 value 方法获取编辑框内当前的文本内容(值);注意:返回的是整数对象,不是字符串
number = QSpinBox.value()
- 演示示例
from PyQt5.Qt import *
app = QApplication([])
window = QWidget()
window.resize(300, 100)
window.move(300, 300)
def display():
label.setText(str(spb.value()))
spb = QSpinBox(window)
spb.resize(200, 25)
spb.move(20, 30)
spb.valueChanged.connect(display)
label = QLabel(window)
label.resize(50, 20)
label.move(50, 65)
label.setText(str(spb.value()))
window.show()
app.exec_()
- 设置数字
- 通过 setValue 方法可以设置提示文本内容
QSpinBox.setValue(5)
- 设置数值循环:setWrapping()
from PyQt5.Qt import *
app = QApplication([])
window = QWidget()
window.resize(300, 100)
window.move(300, 300)
spb = QSpinBox(window)
spb.resize(200, 25)
spb.move(20, 30)
spb.setMaximum(10)
spb.setMinimum(0)
spb.setWrapping(True) # 设置为True ,则表示一直循环
window.show()
app.exec_()
二、日期控件(QDateEdit)
- QDateEdit 类可以用来选择日期时间
- 获取当前日期
- 当用户点击日期时间控件并且选取了 日期和时间,后来程序要获取这个控件里面选定的日期时间,可以使用 date() 方法获取日期对象
# 返回 PySide2.QtCore.QDate 对象
qdate = dateEdit.date()
# 可以转化为 指定格式的字符串
dateStr = qdate.toString('yyyy-MM-dd')
# 也可以获取年月日 对应的数字 ,比如日期是2020年5月2号
year = qdate.year() # 返回 2020
month = qdate.month() # 返回 5
day = qdate.day() # 返回 2
- 信号:dateTimeChanged
QDateEdit.dateTimeChanged.connect(function)
- 演示示例
from PyQt5.Qt import *
app = QApplication([])
window = QWidget()
window.resize(300, 100)
window.move(300, 300)
def display():
lable.setText(dateedit.date().toString('yyyy-MM-dd'))
dateedit = QDateEdit(window)
dateedit.resize(200, 20)
dateedit.move(20, 30)
dateedit.dateChanged.connect(display)
lable = QLabel(window)
lable.resize(100, 30)
lable.move(20, 60)
lable.setText(dateedit.date().toString('yyyy-MM-dd'))
window.show()
app.exec_()