【附源码】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 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.mfbz.cn/a/871708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于距离度量学习的异常检测:一种通过相关距离度量的异常检测方法

异常通常被定义为数据集中与大多数其他项目非常不同的项目。或者说任何与所有其他记录(或几乎所有其他记录)显著不同的记录,并且与其他记录的差异程度超出正常范围,都可以合理地被认为是异常。 例如上图显示的数据集中,我们有四个簇(A、B、C和D)和三个位于这些簇之外的点:P1、P…

client网络模块的开发和client与server端的部分联动调试

客户端网络模块的开发 我们需要先了解socket通信的流程 socket通信 server端的流程 client端的流程 对于closesocket()函数来说 closesocket()是用来关闭套接字的,将套接字的描述符从内存清除,并不是删除了那个套接字,只是切断了联系,所以我们如果重复调用,不closesocket()…

Agentic Security:一款针对LLM模型的模糊测试与安全检测工具

关于Agentic Security Agentic Security是一款针对LLM模型的模糊测试与安全检测工具,该工具可以帮助广大研究人员针对任意LLM执行全面的安全分析与测试。 请注意 Agentic Security 是作为安全扫描工具设计的,而不是万无一失的解决方案。它无法保证完全防…

C++(11)类语法分析(2)

C(10)之类语法分析(2) Author: Once Day Date: 2024年8月17日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 …

Python数据结构:集合详解(创建、集合操作)④

文章目录 1. Python集合概述2. 创建集合2.1 使用花括号 {} 创建集合2.2 使用 set() 函数创建集合2.3 创建空集合 3. 集合操作3.1 添加和删除元素3.2 集合的基本操作3.3 集合的比较操作3.4 不可变集合(frozenset) 4. 综合例子:图书管理系统 Py…

30秒内批量删除git本地分支

在开发过程中,我们经常需要对本地的 Git 分支进行管理。有时,由于各种原因,我们可能需要批量删除本地的分支。这可能是因为某些分支已经不再需要,或者是为了清理本地的分支列表,以保持整洁和易于管理。 要批量删除本地…

没有用的小技巧之---接入网线,有内网没有外网,但是可以登录微信

打开控制面板,找到网络和Internet 选择Internet选项 点击连接,选择局域网设置 取消勾选代理服务器

开放式耳机会打扰到别人吗?四款漏音处理做的好的蓝牙耳机

一般情况下,开放式耳机不会打扰到别人。 开放式耳机通常采用全开放设计,声音不会完全封闭在耳朵里,而是向四周扩散,相比封闭式耳机,其对外界环境的噪音影响更小 。而且现在的开放式耳机在技术上已经有了很大的进步&am…

[数据集][目标检测]工程机械车辆检测数据集VOC+YOLO格式3189张10类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3189 标注数量(xml文件个数):3189 标注数量(txt文件个数):3189 标注…

springboot的自动配置和怎么做自动配置

目录 一、Condition 1、Condition的具体实现 2、Condition小结 (1)自定义条件 (2)SpringBoot 提供的常用条件注解 二、Enable注解 三、EnableAutoConfiguration 注解和自动配置 1、EnableAutoConfiguration的三个注解属性…

git 学习--GitHub Gitee码云 GitLab

1 集中式和分布式的区别 1.1 集中式 集中式VCS必须有一台电脑作为服务器,每台电脑都把代码提交到服务器上,再从服务器下载代码。如果网络出现问题或服务器宕机,系统就不能使用了。 1.2 分布式 分布式VCS没有中央服务器,每台电脑…

Python编码系列—Python SQL与NoSQL数据库交互:深入探索与实战应用

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

预警先行,弯道哨兵让行车更安全

预警先行,弯道哨兵让行车更安全”这句话深刻体现了现代交通安全理念中预防为主、科技赋能的重要性。在道路交通中,尤其是复杂多变的弯道区域,交通事故的发生率往往较高,因此,采取有效的预警措施和引入先进的交通辅助设…

怎么管控终端电脑上的移动端口

管控终端电脑上的移动端口,尤其是USB等移动端口,是确保企业数据安全和提升网络管理效率的重要手段。 一、使用注册表编辑器禁用USB端口(适用于Windows系统) 打开注册表编辑器: 同时按下“WinR”组合键,打…

SEO优化:如何优化自己的文章,解决搜索引擎不收录的问题

可以使用bing的URL检查,来检查自己的文章是不是负荷收录准测,如果页面有严重的错误,搜索引擎是不会进行收录的,而且还会判定文章为低质量文章! 检查是否有问题。下面的页面就是有问题,当然如果是误报你也可…

Java并发类API——CompletionService

CompletionService 是 Java 中 java.util.concurrent 包的一部分,用于管理并发任务的执行,并以完成的顺序提供结果。它结合了线程池和阻塞队列的功能,用于提交任务并按照任务完成的顺序来检索结果,而不是按照任务提交的顺序。 接…

NC拼接所有的字符串产生字典序最小的字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个长度…

单例模式(singleton)- python实现

通俗示例 想象一下,一个国家只有一个国王。不管你在哪里,提到这个国家的国王,大家都能知道是指同一个人。在程序设计中,单例模式就像是这样的国王,一个类只有一个实例,无论你多少次请求这个类的实例&#…

基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍爬虫数据概览HIve表设计Cars Database Tables1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distribu…

Midjourney进阶-反推与优化提示词(案例实操)

​ Midjourney中提示词是关键,掌握提示词的技巧直接决定了生成作品的质量。 当你看到一张不错的图片,想要让Midjourney生成类似的图片,却不知道如何描述画面撰写提示词,这时候Midjourney的/describe指令,正是帮助你推…