PyQt5 微调框(QSpinBox)、日期控件(QDateEdit)的使用


一、微调框(QSpinBox)

  • QSpinBox 类提供了一个微调框小部件,可以输入或使用上下箭头选择数字


  1. 说明
  • 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()

  • 来自知乎

  1. 获取数字
  • 通过 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_()

  1. 设置数字
  • 通过 setValue 方法可以设置提示文本内容

QSpinBox.setValue(5)

  1. 设置数值循环: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 类可以用来选择日期时间


  1. 获取当前日期
  • 当用户点击日期时间控件并且选取了 日期和时间,后来程序要获取这个控件里面选定的日期时间,可以使用 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


  1. 信号:dateTimeChanged

QDateEdit.dateTimeChanged.connect(function)


  1. 演示示例
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_()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM