当前位置: 首页 > article >正文

# 如何使用 PyQt5 创建一个简单的警报器控制界面

如何使用 PyQt5 创建一个简单的警报器控制界面

引言

在现代自动化和监控系统中,警报器扮演着至关重要的角色。它们可以提醒我们注意潜在的危险或紧急情况。在这篇文章中,我将向您展示如何使用Python的PyQt5库创建一个简单的警报器控制界面。这个界面将允许用户通过点击按钮来控制警报器的不同功能,如开启声音、闪光等。

环境准备

在开始之前,请确保您已经安装了Python和以下库:

  • PyQt5:用于创建图形用户界面。
  • pyserial:用于串行通信。

您可以使用pip来安装这些库:

pip install PyQt5 pyserial

设计界面

我们将使用Qt Designer来设计我们的界面。Qt Designer是一个拖放式的界面设计工具,它允许我们无需编写代码就能创建复杂的界面。以下是我们需要的按钮:

  • 声音1
  • 声音2
  • 闪光
  • 闪光+声音1
  • 闪光+声音2
  • 关闭闪光
    在这里插入图片描述

编写代码

1. 创建UI文件

首先,我们需要创建一个UI文件(例如warning.ui),其中包含我们的按钮和布局。您可以使用Qt Designer来完成这一步。
在这里插入图片描述

2. 生成Python代码

使用pyuic5工具将UI文件转换为Python代码:

pyuic5 warning.ui -o warning.py

这将生成一个warning.py文件,其中包含了我们的UI类。
在这里插入图片描述

3. 编写主程序

接下来,我们将编写主程序,该程序将使用PyQt5来创建应用程序,并连接按钮的点击事件到相应的功能。

import sys
import serial
from PyQt5 import QtWidgets
from warning import Ui_MainWindowclass PyQtMainEntry(QtWidgets.QMainWindow, Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)self.ser = serial.Serial('COM7', 9600, timeout=0.5)  # 假设COM7是您的串口def slot1(self):cmdd = bytes.fromhex('0110001A0001034FD9')self.ser.write(cmdd)def slot2(self):cmdd = bytes.fromhex('0110001A000105CFDB')self.ser.write(cmdd)def slot3(self):cmdd = bytes.fromhex('0110001A0001028E19')self.ser.write(cmdd)def slot4(self):cmdd = bytes.fromhex('0110001A000101CE18')self.ser.write(cmdd)def slot5(self):cmdd = bytes.fromhex('0110001A0001040E1B')self.ser.write(cmdd)def slot6(self):cmdd = bytes.fromhex('0110001A0001000FD8')self.ser.write(cmdd)if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)window = PyQtMainEntry()window.show()sys.exit(app.exec_())

运行程序

保存所有文件并运行主程序。您应该能看到一个包含六个按钮的窗口。点击这些按钮,您应该能够通过串口发送命令来控制警报器。
在这里插入图片描述

结论

通过这篇文章,您学会了如何使用PyQt5创建一个简单的警报器控制界面。这个项目可以作为一个起点,您可以根据需要添加更多的功能,如实时状态显示、日志记录等。

相关文章:

# 如何使用 PyQt5 创建一个简单的警报器控制界面

如何使用 PyQt5 创建一个简单的警报器控制界面 引言 在现代自动化和监控系统中,警报器扮演着至关重要的角色。它们可以提醒我们注意潜在的危险或紧急情况。在这篇文章中,我将向您展示如何使用Python的PyQt5库创建一个简单的警报器控制界面。这个界面将…...

MySQL报错解决过程

我在调试datagrip的时候,显示拒绝连接,开始的时候,我以为只是服务没有开启,结果到后来在网上搜索各种解决办法无果后,就选择卸载,卸载之后安装新的MySQL 以下就是我的解决过程。 如果只是在使用外置软件&…...

【AI入门】CherryStudio入门5:创建知识库,对接Obsidian 笔记

前言 来吧,继续CherryStudio的实践,前边给Cherry Studio添加知识库,对接思源笔记,但美中不足,思源笔记得导出再导入知识库,本文看一下obsidian笔记,笔记内容直接被知识库使用,免去导…...

Redis 8.0正式发布,再次开源为哪般?

Redis 8.0 已经于 2025 年 5 月 1 日正式发布,除了一些新功能和性能改进之外,一个非常重要的改变就是新增了开源的 AGPLv3 协议支持,再次回归开源社区。 为什么说再次呢?这个需要从 2024 年 3 月份 Redis 7.4 说起,因为…...

【Redis】Redis常用命令

4.Redis常见命令 4.1 Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 命令太多,不需要死记,学会查询就好了~ Redis为了方便我们学习,将操作不同数据类型…...

负载均衡算法解析(一)NGINX

文章目录 1. 核心数据结构:算法的基石1.1 负载均衡节点结构:定义服务器实体1.2 关键概念阐述:权重 (Weight) 2. NGINX加权轮询算法旨在解决的具体问题深度分析2.1 应对后端服务器间的负载不均衡问题2.2 后端服务健康状态的动态感知与自适应调…...

计算机网络——HTTP/IP 协议通俗入门详解

HTTP/IP 协议通俗入门详解 一、什么是 HTTP 协议?1. 基本定义2. HTTP 是怎么工作的? 二、HTTP 协议的特点三、HTTPS 是什么?它和 HTTP 有啥区别?1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信过程步骤详解: 五、常见…...

ChromeDriverManager的具体用法

ChromeDriverManager 是 webdriver_manager 库的一部分,它用于自动管理 ChromeDriver 的下载和更新。使用 ChromeDriverManager 可以避免手动下载 ChromeDriver 并匹配系统中安装的 Chrome 浏览器版本。以下是 ChromeDriverManager 的基本用法: 步骤 1…...

DeepSeek Copilot idea插件推荐

🌌 DeepSeek Copilot for IntelliJ IDEA 让 AI 成为你的编程副驾驶,极速生成单元测试 & 代码注释驱动开发! 🚀 简介 DeepSeek Copilot 是一款为 IntelliJ IDEA 打造的 AI 编程助手插件,它能够智能分析你的代码逻辑…...

贪心算法应用:最小反馈顶点集问题详解

贪心算法应用:最小反馈顶点集问题详解 1. 问题定义与背景 1.1 反馈顶点集定义 反馈顶点集(Feedback Vertex Set, FVS)是指在一个有向图中,删除该集合中的所有顶点后,图中将不再存在任何有向环。换句话说,反馈顶点集是破坏图中所…...

游戏引擎学习第259天:OpenGL和软件渲染器清理

回顾并为今天的内容做好铺垫 今天,我们将对游戏的分析器进行升级。在之前的修复中,我们解决了分析器的一些敏感问题,例如它无法跨代码重新加载进行分析,以及一些复杂的小问题。现在,我们的分析器看起来已经很稳定了。…...

一篇文章看懂时间同步服务

Linux 系统时间与时区管理 一、时间与时钟类型 时钟类型说明管理工具系统时钟由 Linux 内核维护的软件时钟,基于时区配置显示时间timedatectl硬件时钟 (RTC)主板上的物理时钟,通常以 UTC 或本地时间存储,用于系统启动时初始化时间hwclock …...

12.模方ModelFun工具-立面修整

摘要:本文主要介绍模方ModelFun修模工具——立面修整的操作方法。 点击工具栏即可找到立面修整工具,点击可打开并使用该工具,如下图: 图 工具菜单栏 (1)截面绘制: 快速绘制竖直矩形&#xff1…...

git命令常见用法【持续更新中……】

一、已有本地代码,在gitee创建了空仓库后想将代码与该仓库相连 在本地项目目录下初始化Git # 1. 初始化本地仓库 git init# 2. 添加所有文件到暂存区 git add .# 3. 提交第一个版本 git commit -m "Initial commit: 项目初始化"将本地仓库关联到Gitee 根…...

Docker 渡渡鸟镜像同步站 使用教程

Docker 渡渡鸟镜像同步站 使用教程 🚀 介绍 Docker.aityp.com(渡渡鸟镜像同步站)是一个专注于为国内开发者提供 Docker 镜像加速和同步服务的平台。它通过同步官方镜像源(如 Docker Hub、GCR、GHCR 等),为…...

Python TensorFlow库【深度学习框架】全面讲解与案例

一、TensorFlow 基础知识 1. 核心概念 张量 (Tensor): 多维数组,是 TensorFlow 的基本数据单位(标量、向量、矩阵等)。计算图 (Graph): 早期版本中的静态图机制(TF2.x 默认启用动态图)。会话 (Session): 在 TF1.x 中用于执行计算图(TF2.x 中已弃用)。2. 基本操作 impo…...

火影bug,未保证短时间数据一致性,拿这个例子讲一下Redis

本文只拿这个游戏的bug来举例Redis,如果有不妥的地方,联系我进行删除 描述:今天在高速上打火影(有隧道,有时候会卡),发现了个bug,我点了两次-1000的忍玉(大概用了1千七百…...

Power Query 是 Excel 和 Power BI 中强大的数据获取、转换和加载工具

Power Query 链接是什么 Power Query 是 Excel 和 Power BI 中强大的数据获取、转换和加载工具。Power Query 链接指的是在 Excel 或 Power BI 里通过 Power Query 建立的与外部数据源的连接。这些数据源可以是各种类型,像文本文件(CSV、TXT&#xff09…...

探索元生代:ComfyUI 工作流与计算机视觉的奇妙邂逅

目录 一、引言 二、蓝耘元生代和 ComfyUI 工作流初印象 (一)蓝耘元生代平台简介 (二)ComfyUI 工作流创建是啥玩意儿 三、计算机视觉是个啥 (一)计算机视觉的基本概念 (二)计算…...

Unity-Shader详解-其五

关于Unity的Shader部分的基础知识其实已经讲解得差不多了,今天我们来一些实例分享: 溶解 效果如下: 代码如下: Shader "Chapter8/chapter8_1" {Properties{// 定义属性[NoScaleOffset]_Albedo("Albedo", 2…...

【Java 专题补充】流程控制语句

流程控制语句是用来控制程序中各语句执行顺序的语句,是程序中既基本又非常关键的部分。流程控制语句可以把单个的语句组合成有意义的、能完成一定功能的小逻辑模块。最主要的流程控制方式是结构化程序设计中规定的三种基本流程结构。 1.1 结构化程序设计的三种基本流…...

恶心的win11更新DIY 设置win11更新为100年

‌打开注册表编辑器‌:按下Win R键,输入regedit,然后按回车打开注册表编辑器。‌12‌导航到指定路径‌:在注册表编辑器中,依次展开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings‌新建DWORD值‌&…...

【ArcGIS微课1000例】0146:将多个文件夹下的影像移动到一个目标文件夹(以Landscan数据为例)

本文讲述将多个文件夹下的影像移动到一个目标文件夹,便于投影变换、裁剪等操作。 文章目录 一、数据准备二、解压操作三、批量移动四、查看效果五、ArcGIS操作一、数据准备 全球人口数据集Landscan2000-2023如下所示,每年数据位一个压缩包: 二、解压操作 首先将其解压,方…...

【redis】分片方案

Redis分片(Sharding)是解决单机性能瓶颈的核心技术,其本质是将数据分散存储到多个Redis节点(实例)中,每个实例将只是所有键的一个子集,通过水平扩展提升系统容量和性能。 分片的核心价值 性能提…...

springboot+mysql+element-plus+vue完整实现汽车租赁系统

目录 一、项目介绍 二、项目截图 1.项目结构图 三、系统详细介绍 管理后台 1.登陆页 2.管理后台主页 3.汽车地点管理 4.汽车类别 5.汽车品牌 6.汽车信息 7.用户管理 8.举报管理 9.订单管理 10.轮播图管理 11.交互界面 12.图表管理 汽车租赁商城 1.首页 2.汽…...

Linux第四节:进程控制

一、进程创建 1.1 fork函数 1. fork函数有两个返回值问题 返回的本质就是写入!所以,谁先返回,谁就先写入id,因为进程具有独立性,会发生写时拷贝,父进程和子进程各自指向return语句。 2. fork返回后&#x…...

Qt 编译 sqldrivers之psql

编译postgres pgsql驱动 下载驱动源码修改配置文件编译 下载驱动源码 // 源代码下载 https://download.qt.io/archive/qt/5.15/5.15.2/submodules/驱动目录:qtbase-everywhere-src-5.15.2\src\plugins\sqldrivers 修改配置文件 打开pro文件 右键点击添加库 此处的为debu…...

382_C++_在用户会话结束时,检查是否有其他会话仍然来自同一个客户端 IP 地址,没有连接状态设置为断开,否则为连接

之前出现的问题:重启管理机,工作机上面热备连接状态显示未连接 (此时是有一个工作机连接管理机的),所以正常应该是连接状态解决:根因分析: 重启管理机后,管理机给过来的cookie是空的,导致工作机同时存在两个管理机的session,在其中一个超时后,调用回调函数通知会话断开…...

RViz(机器人可视化工具)的配置文件(moveitcpp)

1. Panels(面板设置) 面板是RViz界面中的各个功能区域,用于显示和操作不同的数据。 Displays(显示面板) Class: rviz_common/Displays 指定面板的类型,这里是显示面板。 Help Height: 78 帮助区域的高度…...

Redis中6种缓存更新策略

Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案。然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性。缓存更新策略直接影响系统的性能、可靠性和数据一致性,选择合适的策略至关重要。 本文将介绍Redis中6种缓…...