日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GUI学习之十四——QAbstractSpinBox学习总结

發(fā)布時(shí)間:2025/4/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GUI学习之十四——QAbstractSpinBox学习总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

QAbstractSpinBox是一個(gè)抽象類,是將所有步長調(diào)節(jié)器的通用的功能抽象出了一個(gè)父類。雖然QAbstractSpinBox是一個(gè)抽象類,但是可以直接實(shí)例化使用。QAbstractSpinBox包含了一個(gè)QLineEdit和兩個(gè)QPushbutton。數(shù)據(jù)的更改可以通過點(diǎn)擊按鈕或使用鍵盤輸入。

由于QAbstractSpinBox是個(gè)基類,沒有對(duì)按鈕的事件進(jìn)行定義,控件中的按鈕點(diǎn)擊是沒有效果的,想要有效果需要對(duì)類進(jìn)行重寫

from PyQt5.Qt import * import sys class MyASB(QAbstractSpinBox):def stepEnabled(self):current = int(self.text())if current == 0:return QAbstractSpinBox.StepUpEnabledelif current == 9999:return QAbstractSpinBox.StepDownEnabledelif current<0 or current>9999:return QAbstractSpinBox.StepNoneelse:return QAbstractSpinBox.StepUpEnabled| QAbstractSpinBox.StepDownEnableddef stepBy(self, steps: int):current =int(self.text())self.lineEdit().setText(str(steps+current)) class Window(QWidget):def __init__(self):super().__init__()self.UI_test()def UI_test(self):asb = MyASB(self)asb.move(100,100)asb.resize(200,40)asb.setAccelerated(True)pass if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_()) QAbstractSpinBox的子類化使用模擬

這樣就能實(shí)現(xiàn)用按鈕在0-9999之間加減,超出范圍是沒有效果的

在后面的演示中為了方便我們都用上面的子類來演示(數(shù)值變化范圍0-9999)。

1.長按按鈕累計(jì)加速

在默認(rèn)情況下使用按鈕對(duì)數(shù)據(jù)進(jìn)行累計(jì)時(shí)數(shù)據(jù)是勻速變化的,還可以使它加速變化

QAbstractSpinBox.setAccelerated(True) QAbstractSpinBox.isAccelerated()

2.只讀設(shè)置

這個(gè)只讀是用戶不能使用鍵盤輸入數(shù)據(jù),但是可以用鼠標(biāo)點(diǎn)擊按鈕來實(shí)現(xiàn)數(shù)據(jù)的更改。

QAbstractSpinBox.setReadOnly(True) QAbstractSpinBox.isReadOnly()

?3.內(nèi)容設(shè)置和獲取

QAbstractSpinBox里面包含了一個(gè)QLineEdit控件,可以直接獲取這個(gè)LineEdit對(duì)象

QAbstractSpinBox.lineEdit()

這樣就可以用QLineEdit里的方法對(duì)數(shù)據(jù)進(jìn)行獲取或修改

QAbstractSpinBox.lineEdit().setText('str') QAbstractSpinBox.lineEdit().text()

其實(shí)QLineEdit里的很多功能(對(duì)齊、自動(dòng)填充、驗(yàn)證器)都可以使用

但是因?yàn)槲覀兂3P枰獜目丶蝎@取數(shù)據(jù),QAbstractSpinBox給我們留了一個(gè)直接的API

QAbstractSpinBox.text()

可以直接獲取數(shù)據(jù)。

4.對(duì)齊方式

QAbstractSpinBox.setAlignment(Qt.AlignCenter) AlignLeft = ... # type: 'Qt.AlignmentFlag' AlignLeading = ... # type: 'Qt.AlignmentFlag' AlignRight = ... # type: 'Qt.AlignmentFlag' AlignTrailing = ... # type: 'Qt.AlignmentFlag' AlignHCenter = ... # type: 'Qt.AlignmentFlag' AlignJustify = ... # type: 'Qt.AlignmentFlag' AlignAbsolute = ... # type: 'Qt.AlignmentFlag' AlignHorizontal_Mask = ... # type: 'Qt.AlignmentFlag' AlignTop = ... # type: 'Qt.AlignmentFlag' AlignBottom = ... # type: 'Qt.AlignmentFlag' AlignVCenter = ... # type: 'Qt.AlignmentFlag' AlignVertical_Mask = ... # type: 'Qt.AlignmentFlag' AlignCenter = ... # type: 'Qt.AlignmentFlag' AlignBaseline = ... # type: 'Qt.AlignmentFlag' 對(duì)齊枚舉值

5.邊框顯示

QAbstractSpinBox控件默認(rèn)有邊框的

右邊的圖就是默認(rèn)情況,帶有邊框,也可以不顯示邊框

QAbstractSpinBox.setFrame(False)

6.按鈕的樣式

還可以對(duì)按鈕的樣式進(jìn)行修改

QAbstractSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) UpDownArrows = ... # type: 'QAbstractSpinBox.ButtonSymbols' PlusMinus = ... # type: 'QAbstractSpinBox.ButtonSymbols' NoButtons = ... # type: 'QAbstractSpinBox.ButtonSymbols' 按鈕樣式枚舉值

枚舉值中有個(gè)加減效果,但是我沒試出來,不顯示倒是可以的。

這里有個(gè)小技巧:如果不顯示按鈕,卻又設(shè)置了只讀模式,那么數(shù)據(jù)還能改么?可以的!在獲取焦點(diǎn)后可以用鍵盤上下鍵來修改數(shù)據(jù)

7.內(nèi)容驗(yàn)證

首先我們可以用QLineEdit來實(shí)現(xiàn)數(shù)據(jù)的驗(yàn)證,在這里我們講是QAbstractSpinBox直接給出的API。

其實(shí)在一開始的案例我們就定義了一個(gè)驗(yàn)證器:數(shù)小于0或大于9999時(shí)再點(diǎn)擊就沒效果了,但是這僅限于用鼠標(biāo)點(diǎn)擊增減按鈕。可以如果我不用鼠標(biāo),用鍵盤輸入數(shù)據(jù)時(shí)是不調(diào)用這個(gè)方法了,那是不是就失效了!那就需要另外的方法了!但是試驗(yàn)是失敗的,回來捋清楚了再說吧

8。信號(hào)

只有一個(gè)信號(hào)要講

QAbstractSpinBox.editingFinished()

其實(shí)就是結(jié)束了編輯:按下Enter鍵、切換焦點(diǎn)、點(diǎn)擊右鍵,關(guān)閉程序

轉(zhuǎn)載于:https://www.cnblogs.com/yinsedeyinse/p/10875067.html

總結(jié)

以上是生活随笔為你收集整理的GUI学习之十四——QAbstractSpinBox学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。