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 QColorDialog – 获取布局

    下面我就来详细讲解一下Python中PyQt5 QColorDialog控件的使用攻略。 什么是QColorDialog? QColorDialog是PyQt5中的一个颜色对话框控件,可以用于让用户选择颜色,返回RGBA值(红、绿、蓝、透明度四个值)。 如何使用QColorDialog? 1. 引入PyQt5库 from PyQt5 import QtWid…

    python 2023年5月12日
    00
  • PyQt5 QCommandLinkButton – 添加动作对象

    当我们在PyQt5中创建GUI界面时,经常需要添加各种交互控件,例如按钮、复选框、单选按钮等等。其中,QCommandLinkButton是一种专为用户指引而设计的按钮。它提供明确的文本和一个指向相关文档的URL链接。 在QCommandLinkButton中添加动作对象非常简单。下面就详细讲解一下具体操作步骤以及两个示例说明: 步骤一:创建命令式链接按钮 …

    python 2023年5月12日
    00
  • PyQt5标签 – 设置颜色效果的强度

    PyQt5是一个Python的GUI工具包,它基于最流行的GUI库——Qt。在PyQt5中,标签(QLabel)是一个常用的窗口控件,它用于显示文本或图像。在本篇攻略中,我们将详细介绍如何利用PyQt5标签控件实现设置颜色效果的强度。 1. PyQt5标签控件简介 在PyQt5中,标签(QLabel)是一个用于显示文本或图像的窗口控件。下面是一个简单的标签控…

    python 2023年5月11日
    00
  • PyQt5 – 单选按钮被按下时的背景颜色

    当我们操作单选按钮时,通过改变其背景色,可以让用户清晰看到当前选中的选项。在PyQt5中,可以使用QPalette和QColor两个类来实现单选按钮被选中时的背景颜色变化。 以下为PyQt5实现单选按钮被按下时的背景颜色的完整使用攻略: 步骤一:导入必要的模块 from PyQt5.QtWidgets import * from PyQt5.QtGui im…

    python 2023年5月10日
    00
  • PyQt5 QSpinBox – 为下降按钮添加边框

    PyQt5是一个Python的GUI编程框架,它能够通过封装Qt库(一个C++编写的跨平台应用程序框架)的功能,让开发者在Python语言下更加方便地实现图形界面程序的制作。其中,QSpinBox又是PyQt框架中的一个常用控件,它可以让用户增加或减少一个数字值,并且我们还可以自定义它的风格,比如添加边框。下面,就让我们详细看一下如何实现“为下降按钮添加边框…

    python 2023年5月13日
    00
  • PyQt5 – QCalendarWidget

    让我来详细讲解Python PyQt5中的QCalendarWidget的完整使用攻略。 1. PyQt5中QCalendarWidget简介 QCalendarWidget是Qt库中的一种控件,可以提供一个交互式的日历。在Python中使用PyQt5库,可以通过使用QCalendarWidget控件,方便地实现日期选择等功能。 2. PyQt5中QCale…

    python 2023年5月11日
    00
  • PyQt5 QCalendarWidget – 获取方向属性

    PyQt5中的QCalendarWidget控件提供了一种交互式日历用户界面,通过它可以为用户提供日期的选择。其中有一个获取方向属性的方法可以帮助我们获取日历部件的布局方向,下面我们来详细讲解其完整使用攻略。 QCalendarWidget的获取方向属性 QCalendarWidget提供了setFirstDayOfWeek()和firstDayOfWeek…

    python 2023年5月12日
    00
  • PyQt5 QListWidget – 设置交替行颜色属性

    PyQt5是Python语言的一个GUI(图形用户界面)库,它包含了丰富的元素,可以让开发者方便地制作出各种各样的窗口应用程序。其中,QListWidget是PyQt5提供的一个列表控件,可以用来显示列表数据。本篇攻略将为大家讲解如何使用QListWidget设置交替行颜色属性。 设置交替行颜色属性的方法 在QListWidget中,可以使用setAlter…

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