当前位置: 首页 > 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应用程序,用户可以通过点击按钮生成一个随机数,并在界面上显示这个随机数,同时窗口的背景颜色会根据这个随机数改变。

http://www.lryc.cn/news/430593.html

相关文章:

  • [Qt][QSS][下]详细讲解
  • RAII在实现webserver这个项目中是怎么体现的?起到了什么作用
  • QT下显示自己派生的QWidget界面(提升为)
  • jvm监控工具一览
  • 使用 Visual Studio 编辑器作为 DailyNotes 的 markdown 编辑器
  • Linux下进程间的通信--管道
  • 【算法】汉诺塔、顺序查找和二分查找法、冒泡排序、插入排序、选择排序
  • Mac电脑遇到DNS解析失败,ip可以访问,域名无法访问
  • 走进 “星星的孩子” 的世界:理解与关爱儿童自闭症
  • 【学习笔记】7、存储器、复杂可编程器件和现场可编程门阵列
  • Java面试题———RabbitMQ篇
  • 2 种方式申请免费 SSL 证书,阿里云 Certbot
  • 49.给出一个字符串数组,实现一个算法给定一组字符串,将字母异位词组合在一起
  • 如何制作统信UOS启动盘?
  • Conda命令
  • perl——获取数组中元素的索引
  • Vector vs 数组:Java中Vector相比数组的优点
  • 掌握步进电机控制算法:提升自动化精度的关键(代码示例)
  • MySQL的源码安装及基本部署(基于RHEL7.9)
  • RUP-系统架构师(五十六)
  • 【大模型系列篇】人工智能与智能计算的发展
  • C++ | Leetcode C++题解之第365题水壶问题
  • c++-类(中)
  • 在 Python 中查找列表中的重复元素
  • Kafka【一】Windows下安装单节点Kafka
  • 基于深度学习的分子生成
  • python——并行设计
  • 系统架构设计师——软件架构基本概念
  • 证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别
  • 基于python的在线自主评测系统设计与实现