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