系列文章目录
Python 界面学习:PYQT界面点击按钮随机变色
文章目录
一、项目需求
写一个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 导入模块:
3.2 定义App类:
3.3 构造函数:
3.4 初始化用户界面:
3.5 设置窗口属性:
3.6 创建按钮:
3.7 创建标签:
3.8 设置按钮和标签的样式:
3.9 changeColor方法:
3.10 getColor方法:
3.11 主程序:
四、效果展示
总结
以上代码实现了一个简单的GUI应用程序,用户可以通过点击按钮生成一个随机数,并在界面上显示这个随机数,同时窗口的背景颜色会根据这个随机数改变。