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

news2024/11/13 12:21:27

系列文章目录

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


四、效果展示

初始化
随机数3
随机数9


总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GDB的基本使用

我有话说 因为时间和精力原因,本文写的虎头蛇尾了,除了启动调试与程序执行以外只有少量截图演示,只是简单的说明。如果有需要可以联系我,我有时间的话会把演示补上,谢谢理解。 启动调试与程序执行 启动调试并传递参数…

哈啰出行Java开发工程师一面面经(校招)

牛客网最新面经分享面试过程: 小编为参加校招、秋招、金九银十面试季的小伙伴们准备了一份很全很详细的java面试宝典(包含各个大厂真题以及最常见的八股文含答案),由于平台篇幅原因,就不在这里一一展示了,…

企业高性能web服务器之nginx篇

文章目录 Nginx核心配置location 使用详情location之精确匹配location之区分大小写location之不区分大小写location之文件名后缀 Nginx账户认证功能自定义错误页面自定义错误日志检测文件是否存在长连接下载服务器 Nginx高级配置Nginx的状态页Nginx 压缩功能Nginx 变量使用Ngin…

5G+智慧农业大数据解决方案

1. 5G智慧农业大数据概述 5G智慧农业大数据方案融合5G网络、大数据等技术,推动农业向智能化、信息化发展。方案包含农产品质量追溯、农业物联网、电子商务、休闲农业等多个平台,全面支撑乡村振兴战略。 2. 乡村振兴战略的政策背景 2022年中央一号文件…

什么是黄金期权?黄金期权合约详解

想要了解什么是黄金期权首先要了解一下黄金期货。黄金期货是以现货黄金为标的物的期货品种,其交易代码通常为Au。而黄金期权,又称为黄金期货期权,是一种期权合约,其标的物是黄金期货合约本身,而非黄金现货。这意味着期…

词向量(One-Hot Encoding、Word Embedding、Word2Vec)

词向量,顾名思义,用向量表示单词。 1、One-Hot Encoding One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。 One…

回归预测|基于雪消融优化相关向量机的数据回归预测Matlab程序SAO-RVM 多特征输入单输出 SAO-RVM

回归预测|基于雪消融优化相关向量机的数据回归预测Matlab程序SAO-RVM 多特征输入单输出 SAO-RVM 文章目录 前言回归预测|基于雪消融优化相关向量机的数据回归预测Matlab程序SAO-RVM 多特征输入单输出 SAO-RVM 一、SAO-RVM模型1. 基本模型原理2. 贝叶斯框架3. 模型优化流程4. 总…

AI 智能体:从普通人到《黑神话:悟空》,保姆级教程让你瞬间变身!

大家好,我是木川 今天还没下班,就看到一款名为《黑神话:悟空》的游戏火爆全网,唤醒了无数玩家对大圣孙悟空的崇拜与向往。游戏中,悟空的七十二变让人叹为观止,但你是否想过,借助AI的力量,我们也…

Kimi + 小爱音箱,我家宝贝的新聊天伙伴。

给儿子制作了一个特别版的小爱音箱,它集成了 Kimi 大模型,他对这个聪明的音箱简直着迷到不行,整天跟它聊天,问东问西。 希望这个玩具不仅能激发起他对 AI 的浓厚兴趣,最好还能让他对我这个老爸有那么一点点的崇拜&…

函数进阶—python

一、函数如何返回多个返回值 如果想让一个函数有多个返回值,该怎么办? 返回多个数据,按照返回值的顺序,用对应顺序的多个变量接收即可,变量之间用逗号隔开,支持不同类型的数据return,如下列代…

GATK SampleList接口介绍

在 GATK 中,SampleList 是一个接口,用于表示一个样本列表。这些样本通常是在基因组分析过程中被处理的不同生物样本。SampleList 接口提供了访问这些样本的一些基本方法,通常用于多样本分析任务,比如变异检测或基因组重测序。 Sa…

入门request请求库使用

基础条件 想要入门request 打开pycharm的终端查看是否在虚拟环境下 在路径前面是否有(venv) 如果没有需要先配置虚拟环境 然后在终端中输入 pip install request 等待下载完成后就在我们的项目中导入 基本用法 1.发送GET请求 import requestsurl…

【C#】去掉字符串中的第一或最后一位

要去掉字符串中的第一或最后一位,可以使用以下几种方法: 1. 去掉第一位 如果想去除字符串的第一位,同样可以使用 Substring 方法。 1.1 使用 Substring 方法 string str "8,"; if (str.Length > 0) {str str.Substring(1)…

如何利用AI创作高质量的文章

讯飞星火 利用AI创作高质量的文章需要遵循以下步骤: 确定主题和目标受众:在开始写作之前,明确文章的主题和目标受众。这将帮助你确定文章的风格、结构和内容。 收集资料和信息:在撰写文章之前,进行充分的研究&#x…

推荐一款基于Spring Boot + VUE 框架开发的分布式文件管理系统,功能齐全、实用便捷(附源码)

前言 在数字化时代,文件管理是企业和个人用户的基本需求。然而,现有的文件管理系统往往存在一些痛点,如存储空间有限、文件共享困难、缺乏在线编辑功能、移动端适配性差等。这些问题限制了用户在不同设备和场景下的文件处理能力。 为了解-决…

利用开源项目加速AI+绘画设计与AI+视频生成的商业化进程

随着生成式人工智能技术的发展,越来越多的工具被开发出来,用于辅助创意工作者创作出令人惊叹的作品。本文将介绍两个开源项目——一个专注于将ComfyUI工作流转换为商业化的移动应用和网页,另一个则聚焦于利用AI技术简化视频创作过程。这两个项目不仅为创作者提供了强大的工具…

【Linux】2.Linux常见指令以及权限理解(1)

文章目录 1.Xshell的一些快捷键操作2.Linux指令2.1常用指令示例2.2常用指令选项2.2.1 ls指令2.2.2 cd/pwd/shoami指令2.2.3 touch指令2.2.4 mkdir指令2.2.5 rmdir指令2.2.6 rm指令 1.Xshell的一些快捷键操作 Xshell: altenter:Xshell自动全屏&#xff0c…

远程在线诊疗小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,医生管理,科室信息管理,科室类型管理,患者信息管理,通知公告管理,医院介绍,系统管理 微信端账号功能包括&a…

【吊打面试官系列-Memcached面试题】memcached 如何处理容错的?

大家好,我是锋哥。今天分享关于 【memcached 如何实现冗余机制? 】面试题,希望对大家有帮助; memcached 如何实现冗余机制? 不处理! 在 memcached 节点失效的情况下,集群没有必要做任何容错处理…

机器人测试自动化智能化交流沙龙 —— 免费参与,线上线下同步进行,探索未来科技新篇章!

在这个科技日新月异的时代,机器人技术正以前所未有的速度推动着各行各业的变革。而在这场变革中,如何确保机器人系统的稳定性、可靠性及高效性,成为了每一个从业者必须面对的重要课题。为此,我们特地在成都这座充满活力的城市&…