PyQt6第四章控件功能之4.2常用控件(4.3.4旋钮:QDial)

4.3.4旋钮:QDial

Dial控件,又称为旋钮控件,它对应QDial类。它本质上类似于一个滑块控件,只是显示的样式不同。QDial类的常用方法如下:

setFixedSize ():设置旋钮的大小

setRange():设置表盘的数值范围

setMinimum():设置最小值

setMaximum():设置最大值

setNotchesVisible():设置是否显示刻度

【例4.18】QDial旋钮控件测试,测试如下:

import sys  # 导入sys模块,用于处理Python运行时环境和命令行参数。

from PyQt6.QtGui import QFont  # 从PyQt6.QtGui模块中导入QFont类,用于设置字体。

from PyQt6.QtWidgets import (QApplication, QWidget, QDial, QLabel, QVBoxLayout)  # 从PyQt6.QtWidgets模块中导入多个类,用于创建应用程序、窗口、旋钮控件、标签和垂直布局。

from PyQt6.QtCore import Qt  # 从PyQt6.QtCore模块中导入Qt类,用于设置控件的属性。


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

    def __init__(self, parent=None):  # 类的构造函数,用于初始化对象,可以有一个父对象参数。

        super(DemoDial, self).__init__(parent)  # 调用父类QWidget的构造函数,完成基本的初始化。

        self.setWindowTitle('QDial旋钮控件测试')  # 设置窗口的标题为'QDial旋钮控件测试'。

        self.resize(400, 300)  # 设置窗口的大小为400像素宽,300像素高。

        self.initUi()  # 调用initUi方法,用于初始化用户界面。

    def initUi(self):  # 初始化用户界面的方法。

        self.dial = QDial(self)  # 创建一个QDial对象(旋钮控件),并指定其父对象为当前窗口。

        self.dial.setRange(0, 100)  # 设置旋钮控件的范围为0到100。

        self.dial.setNotchesVisible(True)  # 设置旋钮控件的刻度线可见。

        self.dial.valueChanged.connect(self.onDialValueChanged)  # 当旋钮控件的值改变时,连接信号到onDialValueChanged方法。

        self.lb = QLabel('0', self)  # 创建一个QLabel对象(标签),显示文本'0',并指定其父对象为当前窗口。

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

        self.lb.setFont(QFont('Arial Black', 16))  # 设置标签的字体为'Arial Black',大小为16。

        vLayout = QVBoxLayout(self)  # 创建一个QVBoxLayout对象(垂直布局),并指定其父对象为当前窗口。

        vLayout.addWidget(self.dial)  # 将旋钮控件添加到垂直布局中。

        vLayout.addWidget(self.lb)  # 将标签添加到垂直布局中。

        self.setLayout(vLayout)  # 设置当前窗口的布局为之前创建的垂直布局。

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

        self.lb.setText(str(self.dial.value()))  # 将旋钮控件的当前值转换为字符串,并设置为标签的文本。


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

    app = QApplication(sys.argv)  # 创建一个QApplication对象,用于管理应用程序级别的资源。

    w = DemoDial()  # 创建一个DemoDial对象,即应用程序的主窗口部件。

    w.show()  # 显示窗口部件。

    sys.exit(app.exec())  # 进入应用程序的主事件循环,等待用户交互,直到应用程序关闭。

这段代码主要实现了一个使用 QDial 控件的简单PyQt6应用程序。QDial 是一个旋钮控件,用户可以通过旋转旋钮来选择一个在指定范围内的值。以下是对代码的详细解释:

功能

  1. 创建一个窗口,窗口标题为“QDial旋钮控件测试”。
  2. 在窗口中放置一个 QDial 旋钮控件,并设置其范围从0到100。
  3. 在旋钮下方放置一个 QLabel,用于显示旋钮的当前值。
  4. 当用户旋转旋钮时,QLabel 上的值会实时更新。

布局和控件

  1. 布局:使用了 QVBoxLayout,这是一个垂直布局,使得 QDial 和 QLabel 可以垂直排列。
  2. 控件
    • QWidget:这是主窗口,所有的其他控件都放置在这个窗口上。
    • QDial:这是旋钮控件,用户可以通过旋转它来选择一个值。
    • QLabel:这是一个标签,用于显示文本。在这个例子中,它用于显示旋钮的当前值。

关键语句

  1. self.setWindowTitle('QDial旋钮控件测试'):设置窗口的标题。
  2. self.dial = QDial(self):创建一个 QDial 控件实例。
  3. self.dial.setRange(0, 100):设置旋钮的值范围从0到100。
  4. self.dial.setNotchesVisible(True):使旋钮上的刻度线可见。
  5. self.dial.valueChanged.connect(self.onDialValueChanged):将旋钮的 valueChanged 信号连接到 onDialValueChanged 槽函数。这样,每当旋钮的值改变时,onDialValueChanged 函数就会被调用。
  6. self.lb = QLabel('0', self):创建一个 QLabel 控件实例,并初始化为显示“0”。
  7. self.lb.setText(str(self.dial.value())):在 onDialValueChanged 函数中,设置 QLabel 的文本为旋钮的当前值。
  8. vLayout.addWidget(self.dial) 和 vLayout.addWidget(self.lb):将 QDial 和 QLabel 添加到垂直布局中。
  9. app.exec():这是PyQt6应用程序的主事件循环,它会一直运行,直到应用程序关闭。
  10. self.initUi():在 __init__ 方法中调用 initUi 方法来初始化界面元素和布局。这是创建和配置控件的常用方式,使得 __init__ 方法更加清晰和简洁。

  11. self.lb.setAlignment(Qt.AlignmentFlag.AlignCenter):设置 QLabel 的文本对齐方式为居中对齐。这样,无论旋钮的值是多少,它都会始终在标签中居中显示。

  12. self.lb.setFont(QFont('Arial Black', 16)):为 QLabel 设置字体和字号。这里选择了 'Arial Black' 字体,并设置了字号为 16。

  13. vLayout = QVBoxLayout(self):创建一个垂直布局对象 vLayout,并将其与主窗口 self 关联。这意味着布局将管理主窗口中的控件位置和大小。

  14. self.setLayout(vLayout):将 vLayout 设置为窗口的布局管理器。这样,所有添加到 vLayout 中的控件都会根据布局的规则来显示。

  15. sys.exit(app.exec()):启动应用程序的事件循环,并等待用户交互。当应用程序关闭时,sys.exit() 确保程序正常退出。app.exec() 返回一个整数值,这个值通常被 sys.exit() 使用作为程序退出码。

通过这个程序,用户可以通过旋转旋钮来选择一个值,并在下方的标签中实时看到所选的值。

这段代码创建了一个简单的PyQt6应用程序,其中包含一个旋钮控件(QDial)和一个标签(QLabel)。旋钮用于选择0到100之间的值,标签用于实时显示这个值。当旋钮的值改变时,通过信号与槽的机制,标签的文本会相应更新。整个界面通过垂直布局管理器(QVBoxLayout)来组织控件的位置和大小。

这个应用程序是一个很好的示例,展示了如何使用PyQt6创建简单的图形用户界面,并通过信号与槽机制实现控件之间的交互。

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值