09. 数字选择控件

一、数字选择控件

  数字选择控件提供了一对上下箭头,用户可以单击箭头选择数字,也可以直接输入。PySide6 中提供的数据选择控件主要有 QSpinBox(整数数字选择控件)和 QDoubleSpinBox(小数数字选择控件)。

  我们可以在终端中使用 pip 安装 pyside6 模块。

pip install pyside6

数字选择控件

# 实例方法
text() -> str                                       # 获取值
clear() -> None                                     # 清除值
setAlignment(flag:Qt.Alignment) -> None             # 设置对齐方式
setButtonSymbols(bs:Qt.ButtonSymbols) -> None       # 设置右侧的按钮样式
setCorrectionMode(cm:Qt.CorrectionMode) -> None     # 设置自动修正模式
setKeyboardTracking(kt:bool) -> None                # 设置键盘跟踪
setFrame(arg__1:bool) -> None                       # 设置是否有外边框
setGroupSeparatorShown(shown:bool) -> None          # 设置分组分隔符(3位)是否显示
setReadOnly(r:bool) -> None                         # 设置是否只读
setSpecialValueText(txt:str) -> None                # 设置特殊值文本,当显示的值等于允许的最小值,显示该文本
setWrapping(w:bool) -> None                         # 设置是否可以循环,即最大值后再增大则变成最小值,最小值后再减小则变成最大值
setAccelerated(on:bool) -> None                     # 当按住增大或减小按钮时,是否加速显示值

# 槽函数
selectAll() -> None                                 # 选择显示的值,不包含前缀和后缀
stepDown() -> None                                  # 增大值
stepUp() -> None                                    # 减少值

  按钮的样式可以用 setButtonSymbols(QAbstractSpinBox.ButtonSymbols) 方法设置,QAbstractSpinBox.ButtonSymbols 枚举类型参数值如下

QAbstractSpinBox.ButtonSymbols.NoButtons
QAbstractSpinBox.ButtonSymbols.UpDownArrows
QAbstractSpinBox.ButtonSymbols.PlusMinus

  用 setCorrectionMode(QAbstractSpinBox.CorrectionMode) 方法设置当输入有误时使用自动修正模式,参数可取值如下:

QAbstractSpinBox.CorrectionMode.CorrectToPreviousValue        # 修正成最近正确的值
QAbstractSpinBox.CorrectionMode.CorrectToNearestValue         # 修正成最接近正确的值

  数字选择类控件常用信号及其说明如下:

editingFinished()       # 编辑完成后发射信号

二、整数数字选择控件

  QSpinBox 是一个整数数字选择控件,该控件提供了一对上下箭头,用户可以单击箭头选择数字,也可以直接输入。如果输入的数值大于设置的最大值,或小于设置的最小值,QSpinBox 将不会接受输入。

  用 QSpinBox 类创建实例对象的方法如下。

QSpinBox(parent:QWidget=None)

其中 parent窗口 或者 容器类控件

  QSpinBox 类的常用方法如下:

# 实例方法
value() -> int                              # 获取当前值
setDisplayIntegerBase(base:int) -> None     # 设置显示的进制
displayIntegerBase() -> int                 # 获取显示的进制
setMinimum(min:int) -> None                 # 设置最小值
setMaximum(max:int) -> None                 # 设置最大值
setRange(min:int, max:int) -> None          # 设置范围
minimum() -> int                            # 获取最小值
maximum() -> int                            # 获取最大值
setSingleStep(value:int) -> None            # 设置步长
singleStep() -> int                         # 获取步长
setPrefix(prefix:str) -> None               # 设置前缀
setSuffix(suffix:str) -> None               # 设置后缀
cleanText() -> None                         # 清除文本

# 槽函数
setValue(value:int) -> None                 # 设置当前值

  QSpinBox 类常用的信号及其说明如下:

textChanged(arg__1)             # 文本改变时发射信号
valueChanged(arg__1)            # 值改变时发射信号 

默认情况下,SpinBox 控件的取值范围为 0~99,步长值为 1;

import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QSpinBox

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.resize(700, 500)

        # 2.创建整数数字选择控件对象
        spinBox = QSpinBox(self)
        spinBox.resize(100, 30)

        # 3.设置取值范围
        spinBox.setRange(10000, 20000)

        # 4.设置上下箭头的步长值
        spinBox.setSingleStep(100)

        # 5.设置控件的当前值
        spinBox.setValue(15000)

        # 6.设置值按照千位用逗号隔开
        spinBox.setGroupSeparatorShown(True)

        # 7.设置值可以循环
        spinBox.setWrapping(True)

        # 8.设置按住按钮时可以加速
        spinBox.setAccelerated(True)

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())

三、小数数字选择控件

  DoubleSpinBox 与 SpinBox 控件类似,区别是它用来选择小数字,并且默认保留两位小数,它对应 PySide6 中的 QDoubleSpinBox 类。QDoubleSpinBox 控件的使用方法与 QSpinBox 控件类似,但由于它处理的是小数数字,因此该控件提供了一个 setDecimals(prec) 方法,用来设置小数的位数。

import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QDoubleSpinBox

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.resize(700, 500)

        # 2.创建小数数字选择控件对象
        doubleSpinBox = QDoubleSpinBox(self)
        doubleSpinBox.resize(100, 30)

        # 3.设置最小值
        doubleSpinBox.setMinimum(10)

        # 4.设置最大值
        doubleSpinBox.setMaximum(20)

        # 5.设置小数位数
        doubleSpinBox.setDecimals(3)

        # 6.设置上下箭头的步长值
        doubleSpinBox.setSingleStep(0.001)

        # 7.设置控件的当前值
        doubleSpinBox.setValue(15)

        # 8.设置值可以循环
        doubleSpinBox.setWrapping(True)

        # 9.设置按住按钮时可以加速
        doubleSpinBox.setAccelerated(True)

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())
posted @   星光映梦  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示