系列文章目录
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_()):进入应用程序的主事件循环,程序会在这里等待用户操作直到退出。
四、效果展示
总结
以上代码实现了一个简单的GUI应用程序,用户可以通过点击按钮生成一个随机数,并在界面上显示这个随机数,同时窗口的背景颜色会根据这个随机数改变。