PyQt5 基本语法(五):输入控件

文章目录

2、 输入控件(二)

2.2 步长调节

简介:

  • 步长调节,QAbstractSpinBox,键盘加鼠标都可以操作

2.2.1 QAbstractSpinBox

2.2.1.1 描述

其是一个由步长调节器和单行文本框来调节和显示数据

继承自 QWidget

其实例化后无法通过鼠标来调节步长,只有通过方法重写来实现

2.2.1.2 功能作用
2.2.1.2.1 使用
  1. 子类化此对象

  2. 实现控制上下能用的方法

    # 重写方法
    stepEnabled()  
    

    QAbstractSpinBox.StepEnabled:

    • QAbstractSpinBox.StepNone:都不能使用
    • QAbstractSpinBox.StepUpEnabled:只有向上可用
    • QAbstractSpinBox.StepDownEnabled:只有向下可用
  3. 实现步长调整方法

    stepBy(p_int)
    
  4. 示例

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    # @author: kun
    from PyQt5.Qt import *
    import sys
    
    
    class MyQAbstractSpinBox(QAbstractSpinBox):
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.lineEdit().setText("0")  # 设置默认值为0
    
        def stepEnabled(self):
            # 比如限定数据只能0~9,当数据等于0是,只能向上调节,当数据等于9时,数据只能向下调节
            if int(self.text()) == 0:
                return QAbstractSpinBox.StepUpEnabled
            if int(self.text()) == 9:
                return QAbstractSpinBox.StepDownEnabled
            if 0 <= int(self.text()) <= 9:
                return QAbstractSpinBox.StepDownEnabled | QAbstractSpinBox.StepUpEnabled
    
            return QAbstractSpinBox.StepNone
    
        def stepBy(self, p_int):
            # p_int 为 1 向上 或 -1 向下
            print(p_int)
            self.lineEdit().setText(str(int(self.text()) + p_int))  # 通过拿到左边的单行文本编辑器来编辑文本内容,设置每次点击一次增加1
    
    
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(500, 500)
    
    qa = MyQAbstractSpinBox(w)  # 创建对象
    qa.resize(100, 30)
    qa.move(100, 100)
    
    w.show()
    sys.exit(app.exec_())
    
2.2.1.2.2 主要功能
  1. 长按调整步长加快频率

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    # @author: kun
    from PyQt5.Qt import *
    import sys
    
    
    class MyQAbstractSpinBox(QAbstractSpinBox):
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.lineEdit().setText("0")  
    
        def stepEnabled(self):
            return QAbstractSpinBox.StepDownEnabled | QAbstractSpinBox.StepUpEnabled
    
        def stepBy(self, p_int):
            self.lineEdit().setText(str(int(self.text()) + p_int))  
    
    
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(500, 500)
    
    qa = MyQAbstractSpinBox(w) 
    
    qa.setAccelerated(True)  # 开启长按加速的功能
    print(qa.isAccelerated())  # 判断是否开启加速功能
    
    qa.resize(100, 30)
    qa.move(100, 100)
    
    w.show()
    sys.exit(app.exec_())
    

    控制用户长按按钮后,内容调整的频率

  2. 只读限制

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    # @author: kun
    from PyQt5.Qt import *
    import sys
    
    
    class MyQAbstractSpinBox(QAbstractSpinBox):
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.lineEdit().setText("0")
    
        def stepEnabled(self):
            return QAbstractSpinBox.StepDownEnabled | QAbstractSpinBox.StepUpEnabled
    
        def stepBy(self, p_int):
            self.lineEdit().setText(str(int(self.text()) + p_int))
    
    
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(500, 500)
    
    qa = MyQAbstractSpinBox(w)
    
    qa.setReadOnly(True)  # 设置只读限制,只能通过按钮修改值,不能通过键盘键入数值
    print(qa.isReadOnly())  # 判断是否开启只读限制
    
    qa.resize(100, 30)
    qa.move(100, 100)
    
    w.show()
    sys.exit(app.exec_())
    
  3. 设置及获取内容

    text()  # 获取文本框,里面的内容
    lineEdit()  # 拿到左边单行文本框对象,可以对内容进行设置和获取
    # 设置文本框内容
    lineEdit().setText(str)  
    # 获取文本框内容
    lineEdit().text()
    

    QLineEdit:里面的大部分方法都可以在这里使用

  4. 设置对齐方式

    qa.setAlignment(Qt.Alignment)  # 设置文本的对齐方式
    qa.alignment()  # 获取文本的对齐方式
    
  5. 设置周边框架

    qa.setFrame(False)  # 设置周边框架,默认有边框
    print(qa.hasFrame())  # 查看是否有框架
    qa.clear()  # 清空文本框内的文本内容
    
  6. 设置按钮样式

    setButtonSymbols(QAbstractSpinBox.ButtonSymbols)  # 设置按钮样式
    buttonSymbols()  # 获得按钮样式
    
2.2.1.2.3 内容验证
2.2.1.2.3.1 语法

其在输入内容时进行验证

  • validate(p_str, p_int):验证规则
  • fixup(p_str):恢复方法

具体内容:点我

2.2.1.2.3.2 案例

验证通过 18 ~ 180 的数据,超过部分设置为最近的最值

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys


class MyQAbstractSpinBox(QAbstractSpinBox):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.lineEdit().setText("18")

    def stepEnabled(self):
        if int(self.text()) == 18:
            return QAbstractSpinBox.StepUpEnabled
        if int(self.text()) == 180:
            return QAbstractSpinBox.StepDownEnabled
        if 18 < int(self.text()) < 180:
            return QAbstractSpinBox.StepDownEnabled | QAbstractSpinBox.StepUpEnabled

    def stepBy(self, p_int):
        self.lineEdit().setText(str(int(self.text()) + p_int))

    def validate(self
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveKenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值