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 如何获得按钮的文本

    在PyQt5中获取按钮的文本,可以通过Qt5中提供的QPushButton类来实现。具体步骤如下: 导入PyQt5.QtWidgets模块下的QPushButton类 from PyQt5.QtWidgets import QPushButton 实例化QPushButton按钮控件,并设置按钮的文本(text)属性 button = QPushButton…

    python 2023年5月10日
    00
  • PyQt5 QCalendarWidget – 分配基本尺寸值

    PyQt5的QCalendarWidget控件是一个日历控件,可以帮助用户选择日期和显示当前日期。默认情况下,QCalendarWidget的大小是700×560,但是我们可以根据需要调整其大小和布局。 为了调整QCalendarWidget的大小和布局,我们需要了解QCalendarWidget的两个属性:sizePolicy和minimumSizeHin…

    python 2023年5月12日
    00
  • PyQt5 QDockWidget – 设置允许的区域

    PyQt5是一款基于Python的GUI库,QDockWidget是PyQt5中的一个界面元素,用于在窗体中添加一个可拖动、浮动或停靠的子窗口。在使用QDockWidget时,可以设置其允许的停靠区域,以使其在主窗口中停靠时不会占用其他控件的空间。本文将介绍如何在Python中使用PyQt5的QDockWidget控件,以及如何设置其允许的停靠区域。 1. …

    python 2023年5月12日
    00
  • PyQt5标签 – 访问阴影的模糊半径

    PyQt5是Python中使用广泛的GUI框架之一,而标签(QLabel)则是PyQt5中常用的基础控件之一。本文将对QLabel组件中的阴影效果进行详细解释,包括阴影颜色、阴影的模糊半径等。 QLabel中阴影的设置 在PyQt5中,可以通过setStyleSheet()方法设置阴影的效果。例子如下: import sys from PyQt5.QtWid…

    python 2023年5月11日
    00
  • PyQt5 – 如何隐藏标签 | label.setHidden方法

    PyQt5是Python语言编写的图形用户界面(GUI)框架,其中包括了标签(Label)控件。通过调用label.setHidden方法,可以隐藏标签控件。在本文中,我们将详细讲解如何使用该方法隐藏标签控件,并提供两个示例说明。 一、隐藏标签 要隐藏标签,只需调用label.setHidden(True)方法即可。该方法需要布尔类型的参数,当参数为True…

    python 2023年5月10日
    00
  • PyQt5 QSpinbox – 如何向它添加行编辑对象

    PyQt5是Python语言中的一种GUI库,用于将用户交互性的窗口应用程序和GUI应用程序。PyQt5不仅支持多种操作系统,而且还提供了丰富的GUI部件和函数库来开发用户界面。 QSpinBox是PyQt5中的一个部件,用于在窗口中实现带有上下按钮的微调框,常用于数字选择器、货币选择器、日期选择器等。QSpinBox还可以通过添加行编辑对象来实现在微调框上…

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

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

    python 2023年5月12日
    00
  • PyQt5 – 标签的双重边框

    PyQt5是一个使用Python语言构建GUI应用程序的工具集,其中标签(QLabel)是GUI应用程序中常用的组件之一。本次将详细讲解PyQt5中如何使用双重边框来美化标签组件,具体操作如下: 标签组件的基本使用 首先,我们需要了解PyQt5中如何创建和使用标签组件。可以通过以下代码来创建一个简单的标签组件: from PyQt5.QtWidgets im…

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