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())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!