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

【附源码】Python :PYQT界面点击按钮随机变色

系列文章目录

Python 界面学习:PYQT界面点击按钮随机变色


文章目录

  • 系列文章目录
  • 一、项目需求
  • 二、源代码
  • 三、代码分析
      • 3.1 导入模块:
      • 3.2 定义App类:
      • 3.3 构造函数:
      • 3.4 初始化用户界面:
      • 3.5 设置窗口属性:
      • 3.6 创建按钮:
      • 3.7 创建标签:
      • 3.8 设置按钮和标签的样式:
      • 3.9 changeColor方法:
      • 3.10 getColor方法:
      • 3.11 主程序:
  • 四、效果展示
  • 总结


一、项目需求

写一个pyqt界面,要求界面有一个按钮,每次点击这个按钮,就会生成一个10以内的随机数,并且每种水技术对应一种颜色,当随机数出现的时候,界面底色要变成对应的颜色,同时要求随机数会在界面中展示出来,并且按钮和数字的颜色不会改变



二、源代码

代码如下:

import sys
import random
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColorclass App(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('随机数颜色变化展示')# 设置窗口的初始大小self.setGeometry(100, 100, 350, 250)# 创建按钮并设置点击事件self.button = QPushButton('生成随机数', self)self.button.clicked.connect(self.changeColor)self.button.setGeometry(100, 50, 150, 40)  # 设置按钮的位置和大小# 创建标签用于显示随机数self.label = QLabel('点击按钮生成随机数', self)self.label.setGeometry(100, 110, 150, 30)  # 设置标签的位置和大小self.label.setAlignment(Qt.AlignCenter)  # 文本居中# 设置按钮和标签的初始颜色self.button.setStyleSheet("color: white; background-color: black;")self.label.setStyleSheet("color: black;")def changeColor(self):# 生成随机数num = random.randint(0, 9)# 根据随机数选择颜色color_name = self.getColor(num)# 设置窗口的背景颜色self.setStyleSheet(f"background-color: {color_name};")# 更新标签显示的随机数self.label.setText(f'随机数: {num}')def getColor(self, num):# 定义颜色映射colors = {0: 'red',1: 'green',2: 'blue',3: 'yellow',4: 'magenta',5: 'darkred',6: 'darkgreen',7: 'darkblue',8: 'darkmagenta',9: 'cyan'}return colors.get(num, 'lightgray')  # 默认颜色为浅灰色if __name__ == '__main__':app = QApplication(sys.argv)ex = App()ex.show()sys.exit(app.exec_())

三、代码分析

3.1 导入模块:

import sys:导入Python的系统模块,通常用于访问命令行参数或退出程序。

import random:导入Python的随机数生成模块,用于生成随机数。

from PyQt5.QtWidgets import …:从PyQt5的QtWidgets模块导入所需的QWidget、QPushButton、QLabel等组件。

from PyQt5.QtCore import Qt:从QtCore模块导入Qt命名空间,它包含了Qt的一些基本功能,如信号和槽机制。

from PyQt5.QtGui import QColor:从QtGui模块导入QColor类,用于颜色的表示。

3.2 定义App类:

class App(QWidget):定义了一个名为App的类,它继承自QWidget,表示应用程序的主窗口。

3.3 构造函数:

def init(self):构造函数,用于初始化App类的对象。

super().init():调用父类QWidget的构造函数。

self.initUI():调用initUI方法来设置用户界面。

3.4 初始化用户界面:

def initUI(self):定义了initUI方法,用于初始化窗口的标题、大小、按钮和标签。

3.5 设置窗口属性:

self.setWindowTitle(‘随机数颜色变化展示’):设置窗口的标题。

self.setGeometry(100, 100, 350, 250):设置窗口的位置和大小。

3.6 创建按钮:

self.button = QPushButton(‘生成随机数’, self):创建一个按钮,文本为“生成随机数”。

self.button.clicked.connect(self.changeColor):为按钮的点击事件连接到changeColor方法。

self.button.setGeometry(100, 50, 150, 40):设置按钮的位置和大小。

3.7 创建标签:

self.label = QLabel(‘点击按钮生成随机数’, self):创建一个标签,初始文本为“点击按钮生成随机数”。

self.label.setGeometry(100, 110, 150, 30):设置标签的位置和大小。

self.label.setAlignment(Qt.AlignCenter):设置标签文本居中显示。

3.8 设置按钮和标签的样式:

使用setStyleSheet方法设置按钮和标签的样式,包括颜色和背景色。

3.9 changeColor方法:

def changeColor(self):定义了changeColor方法,用于在按钮点击时执行。

num = random.randint(0, 9):生成一个0到9之间的随机整数。

color_name = self.getColor(num):调用getColor方法获取与随机数对应的颜色名称。

self.setStyleSheet(f"background-color: {color_name};"):设置窗口的背景颜色。

self.label.setText(f’随机数: {num}'):更新标签文本,显示生成的随机数。

3.10 getColor方法:

def getColor(self, num):定义了getColor方法,用于根据随机数返回对应的颜色名称。

使用一个字典colors来映射数字到颜色名称。

return colors.get(num, ‘lightgray’):返回与数字对应的颜色,如果没有对应的颜色,则返回默认颜色’lightgray’。

3.11 主程序:

if name == ‘main’::Python的常规用法,用于判断是否作为主程序运行。

app = QApplication(sys.argv):创建一个QApplication对象,初始化应用程序。

ex = App():创建App类的一个实例。

ex.show():显示窗口。

sys.exit(app.exec_()):进入应用程序的主事件循环,程序会在这里等待用户操作直到退出。


四、效果展示

初始化
随机数3
随机数9


总结

以上代码实现了一个简单的GUI应用程序,用户可以通过点击按钮生成一个随机数,并在界面上显示这个随机数,同时窗口的背景颜色会根据这个随机数改变。

相关文章:

【附源码】Python :PYQT界面点击按钮随机变色

系列文章目录 Python 界面学习:PYQT界面点击按钮随机变色 文章目录 系列文章目录一、项目需求二、源代码三、代码分析3.1 导入模块:3.2 定义App类:3.3 构造函数:3.4 初始化用户界面:3.5 设置窗口属性:3.6 …...

[Qt][QSS][下]详细讲解

目录 1.样式属性0.前言1.盒模型(Box Model) 2.常用控件样式属性1.按钮2.复选框3.单选框4.输入框5.列表6.菜单栏7.注意 1.样式属性 0.前言 QSS中的样式属性⾮常多,不需要都记住,核⼼原则是⽤到了就去查 ⼤部分的属性和CSS是⾮常相似的 QSS中有些属性&am…...

RAII在实现webserver这个项目中是怎么体现的?起到了什么作用

在WebServer项目中,RAII(Resource Acquisition Is Initialization,即资源获取即初始化)是一种重要的资源管理策略,它主要通过智能指针、锁、文件句柄等对象的生命周期来管理资源的分配和释放。RAII在WebServer项目中的…...

QT下显示自己派生的QWidget界面(提升为)

在实际开发过程中,我们可能有这样的需求,自己绘制一个仪表盘界面,然后将其贴到主界面上方。 这个时候就会用到“提升为”这个功能,该功能目的是将QWidget提升为自己派生的QWdiget子类,具体操作为,在主界面…...

jvm监控工具一览

下面是对 BTrace、JAD、JMAP、JSTAT、JSTACK、JINFO 以及 MARK 工具的比较表: 工具/属性功能适用场景使用难度是否侵入式是否需要重启 JVMBTrace动态跟踪和监控 Java 应用程序性能分析、故障排查、日志收集、安全监控中等无侵入式否JAD反编译 Java 字节码文件&…...

使用 Visual Studio 编辑器作为 DailyNotes 的 markdown 编辑器

DailyNotes 是我使用过的最优秀的日常笔记管理工具,为它配置一个好的 markdown 编辑器,可以大幅提升效率。 除了使用 Typora 作为 markdown 编辑器,Visual Studio Code 也是一个非常不错的选择,令人惊喜的是,它也支持…...

Linux下进程间的通信--管道

关于进程间的通信 Linux进程间通信(Inter-Process Communication,IPC)是指在多个进程之间传输数据或信号的一些方法。由于Linux中的进程有各自独立的地址空间,因此它们不能直接访问对方的内存。为了实现进程间的通信,…...

【算法】汉诺塔、顺序查找和二分查找法、冒泡排序、插入排序、选择排序

1 时间装饰器 2 汉诺塔 3 顺序查找和二分查找法 4 冒泡排序 5 插入排序 6 选择排序 1 时间装饰器 import timedef cal_time(func):def wrapper(*args, **kwargs):t1 time.time()result func(*args, **kwargs)t2 time.time()print("%s running time: %s secs." % …...

Mac电脑遇到DNS解析失败,ip可以访问,域名无法访问

当Mac电脑遇到DNS解析失败的问题时,可以尝试以下几个解决方法‌: 1.检查网络连接‌:确保Mac已连接到可用的网络,并且网络连接正常。可以尝试重新连接Wi-Fi或使用有线连接来排除网络问题。 2.清除DNS缓存‌:打开终端应…...

走进 “星星的孩子” 的世界:理解与关爱儿童自闭症

在这个充满生机与活力的世界里,有一群特殊的孩子,他们仿佛来自遥远的星球,沉浸在自己的独特世界中,难以与外界进行有效的沟通和互动。他们是自闭症儿童,也被称为 “星星的孩子”。 自闭症,又称孤独症谱系障…...

【学习笔记】7、存储器、复杂可编程器件和现场可编程门阵列

可编程逻辑器件PLD复杂可编程逻辑器件CPLD现场可编程门阵列FPGA 7.1 只读存储器(ROM) 7.1.1 ROM的结构 ROM存储器 存储阵列 地址译码器 输出控制电路 存储阵列,由许多存储单元(1bit)组成。每次读出一组数据&…...

Java面试题———RabbitMQ篇

目录 1.你们项目中哪里用到了RabbitMQ 2、为什么会选择使用RabbitMQ 3、使用RabbitMQ如何保证消息不丢失 4、消息的重复消费问题如何解决的 5、如何解决消息堆积在MQ的问题 6、RabbitMQ如何保证消费的顺序性 7、RabbitMQ的延迟队列有了解过嘛 8、RabbitMQ如何设置消息过…...

2 种方式申请免费 SSL 证书,阿里云 Certbot

如何使用免费的 SSL 证书,有时在项目中需要使用免费的 SSL 证书,Aliyun 提供免费证书,三个月有效期,可以直接在aliyun 申请,搜索 SSL 证书,选择测试证书。 Aliyun 证书需要每三月来来换一次,页…...

49.给出一个字符串数组,实现一个算法给定一组字符串,将字母异位词组合在一起

49. Group Anagrams 题目 给定一组字符串,将字母异位词组合在一起。 示例: 输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [ [“ate”,“eat”,“tea”], [“nat”,“tan”], [“bat”] ] 注意: 所有输入均为小写字母。输出的顺序可以…...

如何制作统信UOS启动盘?

如何制作统信UOS启动盘? 一、下载UOS系统安装镜像二、在UOS系统环境下制作启动盘步骤一:准备U盘步骤二:打开启动盘制作工具步骤三:选择ISO镜像文件步骤四:选择安装介质并格式化步骤五:等待制作完成 三、在W…...

Conda命令

查看当前有哪些虚拟环境 conda env list创建(删除)一个新的虚拟环境 conda create --name test1 python3.8 conda env remove --name test1进入和退出一个环境 conda activate test1 conda deactivate列出当前包安装的包 conda list安装包 conda in…...

perl——获取数组中元素的索引

参考: 如何获取数组中元素的索引 如果保证所有元素都是唯一的,或者只有第一个索引是感兴趣的: my ($index) grep { $array[$_] ~~ $element } 0 .. $#array;...

Vector vs 数组:Java中Vector相比数组的优点

每日自动更新各类学习教程及工具下载合集 ​​https://pan.quark.cn/s/874c74e8040e​​ 在Java编程中,数组(Array)和Vector都是用于存储数据的容器,但它们在设计和功能上有所不同。选择使用哪种数据结构取决于具体的需求。在这…...

掌握步进电机控制算法:提升自动化精度的关键(代码示例)

引言 步进电机因其高精度定位、良好的控制性能和简单的驱动方式,广泛应用于各类自动化设备中,如3D打印机、数控机床和机器人等。为了实现对步进电机的精确控制,采用合适的控制算法至关重要。本文将详细介绍几种常见的步进电机控制算法&#…...

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...