一、微調框(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_()