PyQt6第四章控件功能之4.2常用控件(4.2.9计数器:QSpinBox和 QDoubleSpinBox)

本文详细介绍了如何在PyQt6中使用QSpinBox控件创建一个允许用户选择或输入整数的应用程序,包括设置范围、步长和值,以及处理值变化的信号槽机制。
摘要由CSDN通过智能技术生成

4.2.9计数器:QSpinBox和 QDoubleSpinBox

在默认情况下,QSpinBox取值范围是0~99,每次改变的步长值为1。DoubleSpinBox 的默认精度是两位小数,但可以通过 setDecimals()来改变。QSpinBox类中的常用方法如下:

setMinimum():设置计数器的下界

setMaximum():设置计数器的上界

setRange():设置计数器的最大值、最小值和步长值

setValue():设置计数器的当前值

value():获取计数器的当前值

setSingleStep():设置计数器的步长值

singleStep():获取计数器的步长值

【例4.12】QSpinBox计数器测试。如下:

import sys  # 导入sys模块,用于获取或操作Python解释器的相关变量和函数。

from PyQt6.QtCore import *  # 从PyQt6的QtCore模块中导入所有类和函数,用于处理PyQt的核心功能,如信号和槽机制、事件处理等。

from PyQt6.QtWidgets import *  # 从PyQt6的QtWidgets模块中导入所有类和函数,用于创建图形用户界面组件。


class MyWidget(QWidget):  # 定义一个名为MyWidget的新类,继承自QWidget。

    def __init__(self, parent=None):  # 初始化方法,parent参数用于指定父窗口,默认为None。

        super(MyWidget, self).__init__(parent)  # 调用父类QWidget的初始化方法。

        self.setWindowTitle("SpinBox测试")  # 设置窗口的标题为“SpinBox测试”。

        self.resize(300, 100)  # 设置窗口的大小为300x100像素。

        self.lb1 = QLabel("选择或者输入数字:")  # 创建一个QLabel对象,用于显示文本“选择或者输入数字:”。

        self.sb = QSpinBox()  # 创建一个QSpinBox对象,这是一个允许用户选择或输入整数的控件。

        self.sb.valueChanged.connect(self.valueFunc)  # 当QSpinBox的值改变时,连接到一个名为valueFunc的方法。

        self.lb2 = QLabel(" ")  # 创建一个QLabel对象,初始时显示一个空格,后续用于显示用户选择的数字。

        self.lb2.setAlignment(Qt.AlignmentFlag.AlignCenter)  # 设置self.lb2的标签文本居中对齐。

        hLayout = QHBoxLayout()  # 创建一个水平布局对象。

        hLayout.addWidget(self.lb1)  # 将self.lb1(显示“选择或者输入数字:”的QLabel)添加到水平布局中。

        hLayout.addWidget(self.sb)  # 将QSpinBox控件添加到水平布局中。

        ww = QWidget(self)  # 创建一个新的QWidget对象,并将其父窗口设置为当前MyWidget对象。

        vLayout_ww = QVBoxLayout(ww)  # 为ww创建一个垂直布局对象。

        vLayout_ww.addLayout(hLayout)  # 将之前创建的水平布局添加到ww的垂直布局中。

        vLayout_ww.addWidget(self.lb2)  # 将self.lb2(用于显示数字的QLabel)添加到ww的垂直布局中。

    def valueFunc(self):  # 定义一个方法,用于处理QSpinBox的值改变事件。

        self.lb2.setText("输入值: " + str(self.sb.value()))  # 设置self.lb2的文本为“输入值: ”加上QSpinBox的当前值。


if __name__ == '__main__':  # 检查当前脚本是否是作为主程序运行。

    app = QApplication(sys.argv)  # 创建一个QApplication对象,这是PyQt6应用程序的入口点。

    ex = MyWidget()  # 创建一个MyWidget对象。

    ex.show()  # 显示MyWidget窗口。

    sys.exit(app.exec())  # 进入Qt应用程序的主循环,等待用户交互。当应用程序结束时,通过sys.exit退出Python解释器。

这段代码主要实现了一个基于PyQt6的图形用户界面(GUI)应用程序,该应用程序包含一个标签(QLabel)、一个数值选择框(QSpinBox)和另一个标签用于显示用户选择的数值。用户可以通过QSpinBox选择或输入一个数字,然后这个数字会显示在第二个标签中。

使用的布局和控件

  • 布局
    • QHBoxLayout:水平布局,用于将标签和数值选择框水平排列。
    • QVBoxLayout:垂直布局,用于将水平布局和第二个标签垂直排列。
  • 控件
    • QWidget:基础窗口部件。
    • QLabel:用于显示文本标签的控件。这里使用了两个标签,一个用于显示提示信息“选择或者输入数字:”,另一个用于显示用户选择的数值。
    • QSpinBox:数值选择框控件,用户可以通过它选择或输入一个整数。

说明:

1.标签和计数器放置在一个水平布局中,然后将其和显示输入值标签放在垂直布局中

2.将计数器的valueChanged信号关联槽函数valueFunc。

关键语句

  1. self.setWindowTitle("SpinBox测试")设置窗口的标题为“SpinBox测试”。

  2. self.resize(300, 100)设置窗口的大小为300x100像素。

  3. self.sb = QSpinBox()创建一个数值选择框控件。

  4. self.sb.valueChanged.connect(self.valueFunc)连接数值选择框的valueChanged信号到valueFunc槽函数。当用户更改数值选择框中的值时,valueFunc函数会被调用。

  5. self.lb2.setAlignment(Qt.AlignmentFlag.AlignCenter)设置第二个标签的文本对齐方式为居中。

  6. hLayout = QHBoxLayout() 和 vLayout_ww = QVBoxLayout(ww)分别创建水平布局和垂直布局对象。

  7. hLayout.addWidget(self.lb1) 和 hLayout.addWidget(self.sb)将提示标签和数值选择框添加到水平布局中。

  8. vLayout_ww.addLayout(hLayout) 和 vLayout_ww.addWidget(self.lb2):将水平布局和第二个标签添加到垂直布局中。

  9. def valueFunc(self)定义一个槽函数,该函数在用户更改数值选择框中的值时被调用。

  10. self.lb2.setText("输入值: "+str(self.sb.value())):在槽函数中,获取数值选择框的当前值,并将其转换为字符串,然后更新第二个标签的文本,显示用户选择的数值。

总的来说,这段代码创建了一个简单的窗口,窗口中包含一个提示标签、一个数值选择框和一个用于显示用户选择的数值的标签。用户可以通过数值选择框选择或输入一个整数,然后这个整数会显示在第二个标签中。

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值