1、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-----步长调节器】
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_())
推荐阅读
- Qt-数据库应用|Qt数据库应用14-超级自定义委托
- QT|QT-数据可视化大屏1
- C++|C++ 编译
- Qt-经验技巧及通用类库|Qt项目升级到Qt6经验总结
- C++|PAT乙级-1037
- 互联网资讯|ALC Beijing发起人、华为开源技术专家姜宁当选 ASF 董事
- ubuntu|Ubuntu18.04安装opencv3.4.1+opencv_contrib3.4.1
- opengl|09——qt opengl 方向光源 shader
- Qt|Qt常用UI控件读取、写入方法