QT学习|QAbstractSpinBox-----步长调节器

1、QAbstractSpinBox-----步长调节器,可以通过键盘输入控制数值、也可以通过右侧按钮控制。
QT学习|QAbstractSpinBox-----步长调节器
文章图片
(整型的步长调节器、双精度的步长调节器)
QT学习|QAbstractSpinBox-----步长调节器
文章图片

所有步长调节器的父类;
QT学习|QAbstractSpinBox-----步长调节器
文章图片

子类化使用模拟:子类化控件类别,在实现关键的方法。
QT学习|QAbstractSpinBox-----步长调节器
文章图片
QT学习|QAbstractSpinBox-----步长调节器
文章图片

判断上下是否可用,如果可以,会继续调用步长调整方法。

from PyQt5.Qt import *# 子类化控件类别 class MyASB(QAbstractSpinBox): # 定义值,不传值的情况下就指默认值 def __init__(self, parent=None, num=0, *args, **kwargs): super().__init__(parent, *args, **kwargs) self.lineEdit().setText(num)def stepEnabled(self): # 0--9 current_num = int(self.text()) if current_num == 0: return QAbstractSpinBox.StepUpEnabled elif current_num == 9: return QAbstractSpinBox.StepDownEnabled elif current_num < 0 or current_num > 9: return QAbstractSpinBox.StepNone else: return QAbstractSpinBox.StepDownEnabled | QAbstractSpinBox.StepUpEnableddef stepBy(self, p_int): print(p_int) current_num = int(self.text()) + p_int # 步长调节器包含几个子控件,其中一个就是单行文本调节器 self.lineEdit().setText(str(current_num))class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QAbstractSpinButton的学习") self.resize(500, 500) self.setup_ui()def setup_ui(self): asb = MyASB(self, "6") asb.resize(100, 30) asb.move(100, 100)if __name__ == "__main__": import sys app = QApplication(sys.argv) window = Window() window.resize(500, 500) window.show()sys.exit(app.exec_())

2、长按累加加速:(设置是否加速)
QT学习|QAbstractSpinBox-----步长调节器
文章图片

【QT学习|QAbstractSpinBox-----步长调节器】
from PyQt5.Qt import *# 子类化控件类别 class MyASB(QAbstractSpinBox): # 定义值,不传值的情况下就指默认值 def __init__(self, parent=None, num=0, *args, **kwargs): super().__init__(parent, *args, **kwargs) self.lineEdit().setText(num)def stepEnabled(self):return QAbstractSpinBox.StepDownEnabled | QAbstractSpinBox.StepUpEnableddef stepBy(self, p_int): print(p_int) current_num = int(self.text()) + p_int # 步长调节器包含几个子控件,其中一个就是单行文本调节器 self.lineEdit().setText(str(current_num))class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QAbstractSpinButton的学习") self.resize(500, 500) self.setup_ui()def setup_ui(self): asb = MyASB(self, "6") asb.resize(100, 30) asb.move(100, 100) # 设置加速 asb.setAccelerated(True)if __name__ == "__main__": import sys app = QApplication(sys.argv) window = Window() window.resize(500, 500) window.show()sys.exit(app.exec_())

    推荐阅读