最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt QDoubleSpinBox控件用法示例詳解

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

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

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

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

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

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

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

值獲取方法

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

行為控制方法

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

輸入驗(yàn)證方法

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

信號(hào)

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

其他實(shí)用方法

  • clear()
  • 清空值(重置為最小值或 0.0,取決于范圍)。
  • setAlignment(alignment)
  • 設(shè)置文本對(duì)齊方式(如 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è)置步長(zhǎng)(箭頭點(diǎn)擊一次的變化量)
spinbox.setDecimals(2)            # 保留兩位小數(shù)
spinbox.setValue(3.14)            # 設(shè)置初始值
layout.addWidget(spinbox)
window.setLayout(layout)
window.show()
app.exec_()

信號(hào)與槽連接

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

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

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

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

# 當(dāng)數(shù)值超過(guò)50時(shí),自動(dòng)擴(kuò)展范圍
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("$ ")

輸入驗(yàn)證

限制用戶輸入非法值(如超過(guò)范圍時(shí)自動(dòng)修正):

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

高級(jí)用法:自定義步長(zhǎng)邏輯

根據(jù)當(dāng)前值動(dòng)態(tài)調(diào)整步長(zhǎng)(如對(duì)數(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)  # 初始步長(zhǎng)
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)
# 替換默認(rèn)的上下箭頭行為
spinbox.stepUp.connect(on_step_up)
spinbox.stepDown.connect(on_step_down)

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

相關(guān)文章

  • Python 讀取千萬(wàn)級(jí)數(shù)據(jù)自動(dòng)寫入 MySQL 數(shù)據(jù)庫(kù)

    Python 讀取千萬(wàn)級(jí)數(shù)據(jù)自動(dòng)寫入 MySQL 數(shù)據(jù)庫(kù)

    這篇文章主要介紹了Python 讀取千萬(wàn)級(jí)數(shù)據(jù)自動(dòng)寫入 MySQL 數(shù)據(jù)庫(kù),本篇文章會(huì)給大家系統(tǒng)的分享千萬(wàn)級(jí)數(shù)據(jù)如何寫入到 mysql,分為兩個(gè)場(chǎng)景,兩種方式
    2022-06-06
  • 20招讓你的Python飛起來(lái)!

    20招讓你的Python飛起來(lái)!

    20招讓你的 Python飛起來(lái)!這篇文章主要為大家詳細(xì)介紹了Python性能優(yōu)化的20條建議,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Python3+OpenCV實(shí)現(xiàn)簡(jiǎn)單交通標(biāo)志識(shí)別流程分析

    Python3+OpenCV實(shí)現(xiàn)簡(jiǎn)單交通標(biāo)志識(shí)別流程分析

    這篇文章主要介紹了Python3+OpenCV實(shí)現(xiàn)簡(jiǎn)單交通標(biāo)志識(shí)別,主要思路是解析XML文檔,根據(jù)<name>標(biāo)簽進(jìn)行分類,如果是直行、右轉(zhuǎn)、左轉(zhuǎn)、停止就把它從原圖中裁剪下來(lái)并重命名,感謝的朋友跟隨小編一起看看示例代碼
    2021-12-12
  • pycharm設(shè)置默認(rèn)的UTF-8編碼模式的方法詳解

    pycharm設(shè)置默認(rèn)的UTF-8編碼模式的方法詳解

    這篇文章主要介紹了pycharm設(shè)置默認(rèn)的UTF-8編碼模式,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python3的介紹、安裝和命令行的認(rèn)識(shí)(推薦)

    Python3的介紹、安裝和命令行的認(rèn)識(shí)(推薦)

    Python是著名的“龜叔”Guido van Rossum在1989年圣誕節(jié)期間,為了打發(fā)無(wú)聊的圣誕節(jié)而編寫的一個(gè)編程語(yǔ)言。這篇文章主要介紹了Python3的介紹、安裝和命令行的認(rèn)識(shí),需要的朋友可以參考下
    2018-10-10
  • Django如何繼承AbstractUser擴(kuò)展字段

    Django如何繼承AbstractUser擴(kuò)展字段

    這篇文章主要介紹了Django如何繼承AbstractUser擴(kuò)展字段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮

    Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮

    這篇文章主要為大家詳細(xì)介紹了Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談Python3中datetime不同時(shí)區(qū)轉(zhuǎn)換介紹與踩坑

    淺談Python3中datetime不同時(shí)區(qū)轉(zhuǎn)換介紹與踩坑

    最近的項(xiàng)目需要根據(jù)用戶所屬時(shí)區(qū)制定一些特定策略,學(xué)習(xí)、應(yīng)用了若干python3的時(shí)區(qū)轉(zhuǎn)換相關(guān)知識(shí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python的Flask框架路由實(shí)現(xiàn)詳解

    Python的Flask框架路由實(shí)現(xiàn)詳解

    這篇文章主要介紹了Python的Flask框架路由實(shí)現(xiàn)詳解,在啟動(dòng)程序時(shí),python解釋器會(huì)從上到下對(duì)代碼進(jìn)行解釋,當(dāng)遇到裝飾器時(shí),會(huì)執(zhí)行,并把函數(shù)對(duì)應(yīng)的路由以字典的形式進(jìn)行存儲(chǔ),當(dāng)請(qǐng)求到來(lái)時(shí),即可根據(jù)路由查找對(duì)應(yīng)要執(zhí)行的函數(shù)方法,需要的朋友可以參考下
    2023-08-08
  • Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫(kù)

    Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫(kù),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考下
    2025-03-03

最新評(píng)論

莱州市| 沧源| 北票市| 陈巴尔虎旗| 尚义县| 桐乡市| 蒙城县| 商水县| 台山市| 屯昌县| 封开县| 上犹县| 无为县| 铁岭市| 革吉县| 江口县| 北海市| 宣城市| 平定县| 乐都县| 儋州市| 通辽市| 镇康县| 红原县| 田阳县| 集安市| 南木林县| 墨江| 琼海市| 赤城县| 喜德县| 康保县| 湘阴县| 元江| 含山县| 德钦县| 砀山县| 垫江县| 克什克腾旗| 新丰县| 华亭县|