一、项目需求
写一个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应用程序,用户可以通过点击按钮生成一个随机数,并在界面上显示这个随机数,同时窗口的背景颜色会根据这个随机数改变。
到此这篇关于python pyqt界面点击按钮随机变色的文章就介绍到这了,更多相关python pyqt点击按钮随机变色内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论