【PyQt5】指示灯显示

news/2024/12/3 11:37:45/

【PyQt5】指示灯显示

  • 1、背景
  • 2、代码示例
  • 3、QtDesigner绘制

1、背景

利用Qt5写工业控制软件交互界面的时候,经常需要在界面上有指示灯功能。
例如下面的明暗表示串行端口的连接和断开。
在这里插入图片描述
我们本质是用Qt5的label文本标签来实现的,即通过设置标签的样式表来实现的。

假设label标签的大小为60px*60px,对应的border-radius: 30px。
其中明亮的指示灯效果的样式表如下:

self.label.setStyleSheet("background-color: rgb(0, 234, 0);\n""border-radius: 30px;\n""border:3px groove gray;\n""border-style: outset;")

其中暗淡的指示灯效果的样式表如下:

self.label.setStyleSheet("background-color: rgb(58, 111, 50);\n""border-radius: 30px;\n""border:3px groove gray;\n""border-style: outset;")

2、代码示例

python3的代码示例如下。

# -*- coding: utf-8 -*-
# jn10010537
import sys
from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 200)# ------------------   lable标签设置   ------------------- #self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(160, 20, 60, 60))self.label.setStyleSheet("background-color: rgb(58, 111, 50);\n""border-radius: 30px; border:\n"" 3px groove gray;border-style: outset;")self.label.setText("")self.label.setObjectName("label")# ------------------------------------------------------ ## --------------------   添加按钮   --------------------- #self.pushButton1 = QtWidgets.QPushButton(Form)self.pushButton1.setGeometry(QtCore.QRect(100, 100, 200, 30))self.pushButton1.setObjectName("pushButton")self.pushButton2 = QtWidgets.QPushButton(Form)self.pushButton2.setGeometry(QtCore.QRect(100, 150, 200, 30))self.pushButton2.setObjectName("pushButton2")# ------------------------------------------------------ #self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "指示灯"))self.pushButton1.setText(_translate("Form", "开灯"))self.pushButton2.setText(_translate("Form", "关灯"))class MyWindow(QtWidgets.QWidget, Ui_Form):def __init__(self):super(MyWindow, self).__init__()                        # 继承self.setupUi(self)                                      # 渲染画布# 连接函数 ---- 绑定信号/槽self.pushButton1.clicked.connect(self.open_light)       # 按钮1连接到开灯函数self.pushButton2.clicked.connect(self.close_light)      # 按钮2连接到关灯函数def open_light(self):'''开灯:return: None'''self.label.setStyleSheet("background-color: rgb(0, 234, 0);""border-radius: 30; ""border: 3px groove gray;""border-style: outset;}")def close_light(self):'''关灯:return: None'''# self.label.setStyleSheet(self.label.setStyleSheet("background-color: rgb(58, 111, 50);""border-radius: 30px; ""border: 3px groove gray;""border-style: outset;")if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)jn10010537 = MyWindow()jn10010537.show()sys.exit(app.exec_())

运行如下:
在这里插入图片描述

3、QtDesigner绘制

很多场景我们需要通过QtDesigner设计师去绘制UI界面。
通过Qt设计师绘制指示灯的大致步骤如下。
step-1、在画布上拉一个TextLabel标签。

step-2、设置Label标签的geometry几何的宽度和高度,
比如60,60:
在这里插入图片描述

step-3、编辑样式表,
内容如下:

background-color: rgb(58, 111, 50);
border-radius: 30px;
border:3px groove gray;
border-style: outset;

操作如下:
在这里插入图片描述


http://www.ppmy.cn/news/100071.html

相关文章

Homebrew安装及换源

Homebrew安装 官方源安装 直接在Terminal下执行命令👑 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安装命令可直接在🍺Homebrew官网查找: The Missing Package Manag…

Java的IO

1. Java中有几种类型的流 按照流的方向:输入流(inputStream)和输出流(outputStream)。 按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如 FileReade…

ERP系统介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ERP系统概述?1.什么是ERP2.主流ERP系统介绍3.用友ERP4.部署用友ERP畅捷通T6软件系统环境要求4.用友ERP畅捷通T6软件用户管理4.用友ERP畅捷通T6软…

POI入门级操作excel文档的代码示例

本文介绍了使用Apache POI库操作文档的所有方法和代码示例。读者可以学习如何创建Excel文档、Sheet、行、单元格,以及如何设置单元格的值和样式,最后将Excel文档保存到磁盘上。使用POI操作Excel文件非常方便,本文详细介绍了这个过程中需要使用的类和方法,供读者参考使用。 …

CMakeLists

Top level CMakeLists.txt for CGAL-branchbuild message( “ CMake setup ” ) project(CGAL CXX C) Minimal version of CMake: if(WIN32) cmake_minimum_required(VERSION 2.8.6) else() cmake_minimum_required(VERSION 2.6.2) endif() option for branch build optio…

移动端开发之基础知识

移动端开发之流式布局 移动端基础浏览器现状手机屏幕现状移动端调试方法 视口布局视口视觉视口理想视口总结: meta视口标签标准的viewport设置 三倍图物理像素&物理像素比多倍图背景缩放 background-size背景图三倍图 多倍图切图 cutterman 移动端开发选择移动端…

Zabbix Server Api批量添加Zabbix Agent

脚本或使用自动化工具来批量添加Zabbix Agent,从而减少手动操作和提高效率 使用API添加主机可以减少人为错误的发生。通过自动化和脚本,可以确保正确的配置被应用到每个主机上,避免了手动操作可能导致的配置错误。 使用前提条件 1、zabbix…

SMCSQL:一种用于安全查询的联合数据库

摘要 在数据量不断膨胀的今天,但是因为隐私问题,在科学研究等方面的数据共享工作仍然进展缓慢。 本文提出了一种名为 PDN(Private Data Network)的用于多个互不信任的参与方之间的联邦数据库形式。在 PDN 中,用户将查询请求发送给一个名为诚实代理(Honest Broker)的中…