欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt QDoubleSpinBox控件用法示例詳解

 更新時間:2025年04月02日 09:59:50   作者:QMT量化交易  
QDoubleSpinBox?是 PyQt中用于輸入浮點數(shù)的控件,支持鍵盤輸入和上下箭頭調(diào)整數(shù)值,本文給大家介紹PyQt QDoubleSpinBox控件用法,感興趣的朋友一起看看吧

QDoubleSpinBox 是 PyQt中用于輸入浮點數(shù)的控件,支持鍵盤輸入和上下箭頭調(diào)整數(shù)值。與QtSpinBox不同,QtSpinBox是用于輸入整數(shù)的控件。

關(guān)鍵屬性和方法

QDoubleSpinBox 的關(guān)鍵屬性和方法如下表所示:

方法/屬性說明
setRange(min, max)設(shè)置數(shù)值范圍
setSingleStep(step)設(shè)置步長(箭頭點擊一次的變化量)
setDecimals(n)設(shè)置小數(shù)位數(shù)
setValue(value)設(shè)置當(dāng)前值
value()獲取當(dāng)前值
valueChanged數(shù)值變化時觸發(fā)的信號
setPrefix(text)添加前綴文本
setSuffix(text)添加后綴文本

基礎(chǔ)設(shè)置方法

  • setRange(min, max)
  • 設(shè)置數(shù)值范圍(最小值 min,最大值 max)。
  • setMinimum(min) / setMaximum(max)
  • 單獨設(shè)置最小值或最大值。
  • setSingleStep(step)
  • 設(shè)置步長(點擊箭頭時數(shù)值的變化量)。
  • setDecimals(prec)
  • 設(shè)置顯示的小數(shù)位數(shù)(如 prec=2 保留兩位小數(shù))。
  • setValue(value)
  • 直接設(shè)置當(dāng)前值(需確保值在范圍內(nèi))。
  • setPrefix(text) / setSuffix(text)
  • 添加前綴或后綴文本(如單位符號)。

值獲取方法

  • value()
  • 返回當(dāng)前數(shù)值(浮點數(shù)類型)。
  • textFromValue(value) / valueFromText(text)
  • 自定義數(shù)值與文本的轉(zhuǎn)換邏輯(用于輸入驗證或格式化)。

行為控制方法

  • setKeyboardTracking(enabled)
  • 控制是否在輸入時實時更新值(默認 True,實時更新;設(shè)為 False 則在輸入完成后更新)。
  • stepBy(steps)
  • 按步長增量調(diào)整值(正數(shù)增加,負數(shù)減少)。
  • stepUp() / stepDown()
  • 觸發(fā)一次步長增加或減少操作。

輸入驗證方法

  • setCorrectionMode(mode)
  • 設(shè)置輸入修正模式(如 QDoubleSpinBox.CorrectToNearestValue 自動修正非法值)。
  • validate(text, pos) / fixup(text)
  • 自定義輸入驗證邏輯(需重寫方法)。

信號

  • valueChanged(double)
  • 數(shù)值變化時觸發(fā)的信號(參數(shù)為當(dāng)前值)。
  • editingFinished()
  • 用戶結(jié)束編輯(如按下回車或焦點離開)時觸發(fā)。

其他實用方法

  • clear()
  • 清空值(重置為最小值或 0.0,取決于范圍)。
  • setAlignment(alignment)
  • 設(shè)置文本對齊方式(如 Qt.AlignRight)。
  • setReadOnly(enabled)
  • 設(shè)為只讀模式(用戶不可編輯)。

用法示例

控件初始化

from PyQt5.QtWidgets import QApplication, QWidget, QDoubleSpinBox, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
# 創(chuàng)建控件并設(shè)置初始屬性
spinbox = QDoubleSpinBox()
spinbox.setRange(-100.0, 100.0)   # 設(shè)置數(shù)值范圍
spinbox.setSingleStep(0.5)        # 設(shè)置步長(箭頭點擊一次的變化量)
spinbox.setDecimals(2)            # 保留兩位小數(shù)
spinbox.setValue(3.14)            # 設(shè)置初始值
layout.addWidget(spinbox)
window.setLayout(layout)
window.show()
app.exec_()

信號與槽連接

當(dāng)用戶修改數(shù)值時,觸發(fā) valueChanged 信號:

def on_value_changed(value):
    print(f"當(dāng)前值: {value}")
spinbox.valueChanged.connect(on_value_changed)

動態(tài)調(diào)整范圍

根據(jù)條件動態(tài)修改范圍或步長:

# 當(dāng)數(shù)值超過50時,自動擴展范圍
def check_range(value):
    if value > 50.0:
        spinbox.setRange(0.0, 100.0)
    else:
        spinbox.setRange(0.0, 50.0)
spinbox.valueChanged.connect(check_range)

格式化顯示

添加前綴/后綴或自定義格式:

spinbox.setPrefix("溫度: ")     # 添加前綴
spinbox.setSuffix("°C")        # 添加后綴
# 使用自定義格式(如貨幣)
spinbox.setDecimals(0)
spinbox.setPrefix("$ ")

輸入驗證

限制用戶輸入非法值(如超過范圍時自動修正):

spinbox.setKeyboardTracking(False)  # 輸入完成后再驗證(而非實時)
def validate_input(value):
    if value < 0:
        return 0.0  # 自動修正為最小值
    return value
spinbox.valueFromText = lambda text: validate_input(float(text))

高級用法:自定義步長邏輯

根據(jù)當(dāng)前值動態(tài)調(diào)整步長(如對數(shù)刻度):

def dynamic_step(value):
    if value < 1.0:
        return 0.1
    elif value < 10.0:
        return 0.5
    else:
        return 1.0
spinbox.setSingleStep(0.1)  # 初始步長
def on_step_up():
    current = spinbox.value()
    step = dynamic_step(current)
    spinbox.setValue(current + step)
def on_step_down():
    current = spinbox.value()
    step = dynamic_step(current)
    spinbox.setValue(current - step)
# 替換默認的上下箭頭行為
spinbox.stepUp.connect(on_step_up)
spinbox.stepDown.connect(on_step_down)

到此這篇關(guān)于PyQt QDoubleSpinBox控件用法詳解的文章就介紹到這了,更多相關(guān)PyQt QDoubleSpinBox控件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas.DataFrame.drop_duplicates 用法介紹

    pandas.DataFrame.drop_duplicates 用法介紹

    這篇文章主要介紹了pandas.DataFrame.drop_duplicates 用法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python刪除指定類型(或非指定)的文件實例詳解

    python刪除指定類型(或非指定)的文件實例詳解

    這篇文章主要介紹了python刪除指定類型(或非指定)的文件,以實例形式較為詳細的分析了Python刪除文件的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • python類方法和靜態(tài)方法詳解

    python類方法和靜態(tài)方法詳解

    這篇文章主要為大家介紹了python類方法和靜態(tài)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 解決DataFrame排序sort的問題

    解決DataFrame排序sort的問題

    今天小編就為的大家分享一篇解決DataFrame排序sort的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 使用Termux在手機上運行Python的詳細過程

    使用Termux在手機上運行Python的詳細過程

    這篇文章主要介紹了使用Termux在手機上運行Python的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Pytorch之contiguous的用法

    Pytorch之contiguous的用法

    今天小編就為大家分享一篇Pytorch之contiguous的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python中的import絕對導(dǎo)入與相對導(dǎo)入詳解

    python中的import絕對導(dǎo)入與相對導(dǎo)入詳解

    這篇文章主要介紹了python中的import絕對導(dǎo)入與相對導(dǎo)入詳解,在使用python做一些簡單項目時,import一般不會出現(xiàn)問題,但項目結(jié)構(gòu)復(fù)雜時,import可能發(fā)生報錯,需要的朋友可以參考下
    2023-11-11
  • pycharm實現(xiàn)猜數(shù)游戲

    pycharm實現(xiàn)猜數(shù)游戲

    這篇文章主要為大家詳細介紹了pycharm實現(xiàn)猜數(shù)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 詳解python中__name__的意義以及作用

    詳解python中__name__的意義以及作用

    這篇文章主要介紹了詳解python中__name__的意義以及作用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python----數(shù)據(jù)預(yù)處理代碼實例

    Python----數(shù)據(jù)預(yù)處理代碼實例

    這篇文章主要介紹了Python數(shù)據(jù)預(yù)處理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論