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

系列文章目录

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


文章目录

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

一、项目需求

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



二、源代码

代码如下:

python 复制代码
import sys
import random
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor

class 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_()):进入应用程序的主事件循环,程序会在这里等待用户操作直到退出。


四、效果展示




总结

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

相关推荐
数据智能老司机5 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机6 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机6 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机6 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i6 小时前
drf初步梳理
python·django
每日AI新事件6 小时前
python的异步函数
python
这里有鱼汤7 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook16 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室16 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三18 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试