PyQt5 – 右侧的单选按钮指示灯

我会详细介绍一下PyQt5中如何实现右侧的单选按钮指示灯。

简介

在PyQt5中,我们可以使用QButtonGroup和QRadioButton来实现单选按钮的控制。而对于右侧的指示灯,我们可以使用QLabel和QPixmap来实现。

实现步骤

  1. 创建QButtonGroup对象,并将需要进行单选的QRadioButton对象添加到QButtonGroup中:

python
group = QButtonGroup()
radio1 = QRadioButton('Radio Button 1')
radio2 = QRadioButton('Radio Button 2')
group.addButton(radio1)
group.addButton(radio2)

  1. 创建QLabel对象,并设置其背景颜色为灰色:

python
label = QLabel()
label.setStyleSheet('background-color: gray')

  1. 创建QPixmap对象,并设置其大小与QLabel对象相同:

python
pixmap = QPixmap(QSize(16, 16))

  1. 将QPixmap对象填充为红色,并将其设置为QLabel对象的图像:

python
pixmap.fill(QColor(255, 0, 0))
label.setPixmap(pixmap)

  1. 将QButtonGroup的buttonClicked()信号与更改QLabel图像的操作连接:

python
group.buttonClicked.connect(lambda: changeLabelImg(group.checkedId(), label, pixmap))

  1. 实现changeLabelImg()函数,根据选中的单选按钮来更改QLabel对象的图像:

python
def changeLabelImg(buttonId: int, label: QLabel, pixmap: QPixmap):
if buttonId == 1:
pixmap.fill(QColor(255, 0, 0))
elif buttonId == 2:
pixmap.fill(QColor(0, 255, 0))
label.setPixmap(pixmap)

至此,右侧的单选按钮指示灯已经实现成功。

示例说明

示例1

以下代码演示了如何创建两个单选按钮,并将它们添加到QButtonGroup中,然后实现右侧的红绿指示灯:

from PyQt5.QtWidgets import QWidget, QRadioButton, QButtonGroup, QLabel, QHBoxLayout, QVBoxLayout, QApplication
from PyQt5.QtGui import QPixmap, QColor
from PyQt5.QtCore import QSize
import sys


def changeLabelImg(buttonId: int, label: QLabel, pixmap: QPixmap):
    if buttonId == 1:
        pixmap.fill(QColor(255, 0, 0))
    elif buttonId == 2:
        pixmap.fill(QColor(0, 255, 0))
    label.setPixmap(pixmap)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    window = QWidget()
    layout = QVBoxLayout()

    buttonGroup = QButtonGroup()
    radio1 = QRadioButton('Radio Button 1')
    radio2 = QRadioButton('Radio Button 2')
    buttonGroup.addButton(radio1)
    buttonGroup.addButton(radio2)

    label = QLabel()
    label.setStyleSheet('background-color: gray')

    pixmap = QPixmap(QSize(16, 16))
    pixmap.fill(QColor(255, 0, 0))
    label.setPixmap(pixmap)

    buttonGroup.buttonClicked.connect(lambda: changeLabelImg(buttonGroup.checkedId(), label, pixmap))

    hbox = QHBoxLayout()
    hbox.addWidget(radio1)
    hbox.addWidget(radio2)

    layout.addLayout(hbox)
    layout.addWidget(label)

    window.setLayout(layout)
    window.show()

    sys.exit(app.exec_())

示例2

以下代码演示了如何实现多个单选按钮,每个单选按钮有不同的指示灯颜色:

from PyQt5.QtWidgets import QWidget, QRadioButton, QButtonGroup, QLabel, QHBoxLayout, QVBoxLayout, QApplication
from PyQt5.QtGui import QPixmap, QColor
from PyQt5.QtCore import QSize
import sys


def changeLabelImg(buttonId: int, label: QLabel, pixmap: QPixmap, pixmapList: list):
    pixmap.fill(pixmapList[buttonId - 1])
    label.setPixmap(pixmap)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    window = QWidget()
    layout = QVBoxLayout()

    buttonGroup = QButtonGroup()

    radio1 = QRadioButton('Red')
    radio2 = QRadioButton('Green')
    radio3 = QRadioButton('Blue')
    buttonGroup.addButton(radio1, 1)
    buttonGroup.addButton(radio2, 2)
    buttonGroup.addButton(radio3, 3)

    label = QLabel()
    label.setStyleSheet('background-color: gray')

    pixmap = QPixmap(QSize(16, 16))
    pixmapList = [QColor(255, 0, 0), QColor(0, 255, 0), QColor(0, 0, 255)]
    pixmap.fill(pixmapList[0])
    label.setPixmap(pixmap)

    buttonGroup.buttonClicked.connect(lambda: changeLabelImg(buttonGroup.checkedId(), label, pixmap, pixmapList))

    hbox1 = QHBoxLayout()
    hbox1.addWidget(radio1)
    hbox1.addWidget(radio2)
    hbox1.addWidget(radio3)

    layout.addLayout(hbox1)
    layout.addWidget(label)

    window.setLayout(layout)
    window.show()

    sys.exit(app.exec_())

在这个示例中,我们在QButtonGroup中设定了每个QRadioButton的Id,并使用pixmapList来保存每个单选按钮对应的指示灯颜色信息。在changeLabelImg()函数中,我们根据选中的单选按钮来获取对应的颜色信息,然后填充pixmap并将其设置为QLabel的图像。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 右侧的单选按钮指示灯 - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • PyQt5 QSpinBox – 获取点尺寸

    PyQt5是一个Python的GUI编程工具箱,其中包括了丰富的组件库,其中包括了用于数字输入的QSpinBox组件。本文将详细讲解如何在PyQt5中使用QSpinBox组件获取点尺寸。 1. QSpinBox组件概述 在PyQt5中,QSpinBox是一种数字输入框,用户可以通过调整SpinBox中的数字快速输入数字。QSpinBox中固定了一组最小值(m…

    python 2023年5月12日
    00
  • PyQt5 – 在关闭状态下为可编辑的组合框设置背景图片

    下面详细讲解Python的”PyQt5 – 在关闭状态下为可编辑的组合框设置背景图片”的完整使用攻略。 1. 安装PyQt5库 在终端中输入以下命令安装PyQt5库: pip install PyQt5 2. 导入PyQt5模块 在Python代码中导入PyQt5模块: from PyQt5.QtWidgets import * from PyQt5.QtG…

    python 2023年5月10日
    00
  • PyQt5 – 如何设置进度条的最大值

    下面是详细讲解python的“PyQt5 – 如何设置进度条的最大值”的完整使用攻略: 1. 确定进度条的最大值 在使用PyQt5设置进度条之前,首先需要确定进度条的最大值。可以通过调用进度条的 setMaximum() 方法来实现,例如: progressBar.setMaximum(100) 上述代码将会设置进度条的最大值为100。 2. 更新进度条的当…

    python 2023年5月10日
    00
  • PyQt5 QSpinBox – 获取样式提示

    Python的PyQt5库是一个用于开发图形界面的工具,其中的QSpinBox控件是一种可以让用户通过点击增加或减少按钮,来选择一个数字的小工具。本文将详细讲解如何通过PyQt5 QSpinBox控件获取样式提示。 获取QSpinBox控件的样式提示 为了获取QSpinBox控件的样式提示,需要使用Qt样式表编辑器。代码如下: from PyQt5.QtWi…

    python 2023年5月12日
    00
  • PyQt5 – 进度条的名称

    下面是关于PyQt5中进度条名称的完整使用攻略。 简介 PyQt5是一款使用Python语言开发GUI程序的工具包,其中包含了进度条控件,它用于显示任务的进度信息,让用户了解任务的执行情况。而在进度条控件中,名称是一个非常重要的属性,它通常用于标识当前任务的名称。 使用方法 进度条的名称可以通过QProgressBar的setFormat方法进行设置。该方法…

    python 2023年5月10日
    00
  • PyQt5 QSpinBox – 使用isHidden检查它是否被隐藏

    下面就是PyQt5 QSpinBox-使用isHidden检查它是否被隐藏的完整使用攻略: 1. PyQt5 QSpinBox简介 QSpinBox是PyQt5中的一个程序组件,它是针对于数字类型的简单编辑器。它允许用户输入数字,并可以通过单击上下箭头按钮来增加或减少值。除此之外,QSpinBox还提供了一些额外的功能,比如设置范围、初始值等。 2. 使用i…

    python 2023年5月12日
    00
  • PyQt5 QRadioButton小工具

    下面我将为您详细讲解Python的PyQt5 QRadioButton小工具的完整使用攻略。 PyQt5 QRadioButton小工具使用攻略 什么是QRadioButton小工具? QRadioButton是Qt界面框架中的一个小部件,可以让用户在一个互斥的选项列表中选择一项。它是一个继承自QAbstractButton的控件,通常和其他控件一起使用来获…

    python 2023年5月13日
    00
  • PyQt5 – 鼠标悬停时为组合框的视图部分设置边框

    PyQt5是一种Python的GUI编程框架,它提供了丰富的组件和API,可以帮助我们轻松快速地构建界面。在使用PyQt5时,我们经常需要对一些组件的行为和样式进行自定义。这篇攻略将详细讲解如何使用PyQt5为组合框的视图部分设置边框。 1. 确定需求 在开始编写代码之前,我们需要先明确我们的需求。我们希望在鼠标悬停在组合框的视图部分时,为该部分设置一个边框…

    python 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部