Python PYQT界面點(diǎn)擊按鈕隨機(jī)變色功能
一、項(xiàng)目需求
寫一個(gè)pyqt界面,要求界面有一個(gè)按鈕,每次點(diǎn)擊這個(gè)按鈕,就會(huì)生成一個(gè)10以內(nèi)的隨機(jī)數(shù),并且每種水技術(shù)對(duì)應(yīng)一種顏色,當(dāng)隨機(jī)數(shù)出現(xiàn)的時(shí)候,界面底色要變成對(duì)應(yīng)的顏色,同時(shí)要求隨機(jī)數(shù)會(huì)在界面中展示出來(lái),并且按鈕和數(shù)字的顏色不會(huì)改變
二、源代碼
代碼如下:
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('隨機(jī)數(shù)顏色變化展示') # 設(shè)置窗口的初始大小 self.setGeometry(100, 100, 350, 250) # 創(chuàng)建按鈕并設(shè)置點(diǎn)擊事件 self.button = QPushButton('生成隨機(jī)數(shù)', self) self.button.clicked.connect(self.changeColor) self.button.setGeometry(100, 50, 150, 40) # 設(shè)置按鈕的位置和大小 # 創(chuàng)建標(biāo)簽用于顯示隨機(jī)數(shù) self.label = QLabel('點(diǎn)擊按鈕生成隨機(jī)數(shù)', self) self.label.setGeometry(100, 110, 150, 30) # 設(shè)置標(biāo)簽的位置和大小 self.label.setAlignment(Qt.AlignCenter) # 文本居中 # 設(shè)置按鈕和標(biāo)簽的初始顏色 self.button.setStyleSheet("color: white; background-color: black;") self.label.setStyleSheet("color: black;") def changeColor(self): # 生成隨機(jī)數(shù) num = random.randint(0, 9) # 根據(jù)隨機(jī)數(shù)選擇顏色 color_name = self.getColor(num) # 設(shè)置窗口的背景顏色 self.setStyleSheet(f"background-color: {color_name};") # 更新標(biāo)簽顯示的隨機(jī)數(shù) self.label.setText(f'隨機(jī)數(shù): {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') # 默認(rèn)顏色為淺灰色 if __name__ == '__main__': app = QApplication(sys.argv) ex = App() ex.show() sys.exit(app.exec_())
三、代碼分析
3.1 導(dǎo)入模塊:
import sys:導(dǎo)入Python的系統(tǒng)模塊,通常用于訪問命令行參數(shù)或退出程序。
import random:導(dǎo)入Python的隨機(jī)數(shù)生成模塊,用于生成隨機(jī)數(shù)。
from PyQt5.QtWidgets import …:從PyQt5的QtWidgets模塊導(dǎo)入所需的QWidget、QPushButton、QLabel等組件。
from PyQt5.QtCore import Qt:從QtCore模塊導(dǎo)入Qt命名空間,它包含了Qt的一些基本功能,如信號(hào)和槽機(jī)制。
from PyQt5.QtGui import QColor:從QtGui模塊導(dǎo)入QColor類,用于顏色的表示。
3.2 定義App類:
class App(QWidget):定義了一個(gè)名為App的類,它繼承自QWidget,表示應(yīng)用程序的主窗口。
3.3 構(gòu)造函數(shù):
def init(self):構(gòu)造函數(shù),用于初始化App類的對(duì)象。
super().init():調(diào)用父類QWidget的構(gòu)造函數(shù)。
self.initUI():調(diào)用initUI方法來(lái)設(shè)置用戶界面。
3.4 初始化用戶界面:
def initUI(self):定義了initUI方法,用于初始化窗口的標(biāo)題、大小、按鈕和標(biāo)簽。
3.5 設(shè)置窗口屬性:
self.setWindowTitle(‘隨機(jī)數(shù)顏色變化展示’):設(shè)置窗口的標(biāo)題。
self.setGeometry(100, 100, 350, 250):設(shè)置窗口的位置和大小。
3.6 創(chuàng)建按鈕:
self.button = QPushButton(‘生成隨機(jī)數(shù)’, self):創(chuàng)建一個(gè)按鈕,文本為“生成隨機(jī)數(shù)”。
self.button.clicked.connect(self.changeColor):為按鈕的點(diǎn)擊事件連接到changeColor方法。
self.button.setGeometry(100, 50, 150, 40):設(shè)置按鈕的位置和大小。
3.7 創(chuàng)建標(biāo)簽:
self.label = QLabel(‘點(diǎn)擊按鈕生成隨機(jī)數(shù)’, self):創(chuàng)建一個(gè)標(biāo)簽,初始文本為“點(diǎn)擊按鈕生成隨機(jī)數(shù)”。
self.label.setGeometry(100, 110, 150, 30):設(shè)置標(biāo)簽的位置和大小。
self.label.setAlignment(Qt.AlignCenter):設(shè)置標(biāo)簽文本居中顯示。
3.8 設(shè)置按鈕和標(biāo)簽的樣式:
使用setStyleSheet方法設(shè)置按鈕和標(biāo)簽的樣式,包括顏色和背景色。
3.9 changeColor方法:
def changeColor(self):定義了changeColor方法,用于在按鈕點(diǎn)擊時(shí)執(zhí)行。
num = random.randint(0, 9):生成一個(gè)0到9之間的隨機(jī)整數(shù)。
color_name = self.getColor(num):調(diào)用getColor方法獲取與隨機(jī)數(shù)對(duì)應(yīng)的顏色名稱。
self.setStyleSheet(f"background-color: {color_name};"):設(shè)置窗口的背景顏色。
self.label.setText(f’隨機(jī)數(shù): {num}'):更新標(biāo)簽文本,顯示生成的隨機(jī)數(shù)。
3.10 getColor方法:
def getColor(self, num):定義了getColor方法,用于根據(jù)隨機(jī)數(shù)返回對(duì)應(yīng)的顏色名稱。
使用一個(gè)字典colors來(lái)映射數(shù)字到顏色名稱。
return colors.get(num, ‘lightgray’):返回與數(shù)字對(duì)應(yīng)的顏色,如果沒有對(duì)應(yīng)的顏色,則返回默認(rèn)顏色’lightgray’。
3.11 主程序:
if name == ‘main’::Python的常規(guī)用法,用于判斷是否作為主程序運(yùn)行。
app = QApplication(sys.argv):創(chuàng)建一個(gè)QApplication對(duì)象,初始化應(yīng)用程序。
ex = App():創(chuàng)建App類的一個(gè)實(shí)例。
ex.show():顯示窗口。
sys.exit(app.exec_()):進(jìn)入應(yīng)用程序的主事件循環(huán),程序會(huì)在這里等待用戶操作直到退出。
四、效果展示
總結(jié)
以上代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的GUI應(yīng)用程序,用戶可以通過點(diǎn)擊按鈕生成一個(gè)隨機(jī)數(shù),并在界面上顯示這個(gè)隨機(jī)數(shù),同時(shí)窗口的背景顏色會(huì)根據(jù)這個(gè)隨機(jī)數(shù)改變。
到此這篇關(guān)于Python PYQT界面點(diǎn)擊按鈕隨機(jī)變色的文章就介紹到這了,更多相關(guān)Python PYQT點(diǎn)擊按鈕隨機(jī)變色內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python編程PyQt5創(chuàng)建按鈕及觸發(fā)點(diǎn)擊事件示例解析
- python GUI庫(kù)圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實(shí)例
- python GUI庫(kù)圖形界面開發(fā)之PyQt5單選按鈕控件QRadioButton詳細(xì)使用方法與實(shí)例
- python之PyQt按鈕右鍵菜單功能的實(shí)現(xiàn)代碼
- python PyQt5/Pyside2 按鈕右擊菜單實(shí)例代碼
- Python中PyQt5/PySide2的按鈕控件使用實(shí)例
- python之pyqt5通過按鈕改變Label的背景顏色方法
相關(guān)文章
- 這篇文章主要為大家介紹了python中selenium模塊的安裝和配置環(huán)境變量教程、提取數(shù)據(jù)操作、無(wú)頭模式,有需要的朋友可以借鑒參考下,希望能夠?qū)Υ蠹矣兴鶐椭?/div> 2022-10-10
Python實(shí)現(xiàn)屬性可修改的裝飾器方式
這篇文章主要介紹了Python實(shí)現(xiàn)屬性可修改的裝飾器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法
在本篇文章里小編個(gè)大家整理了一篇關(guān)于Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法,有興趣的朋友們可以跟著學(xué)習(xí)參考下。2021-08-08基于Python編寫一個(gè)簡(jiǎn)單的垃圾郵件分類器
隨著電子郵件的廣泛使用,垃圾郵件也日益增多,本篇文章將介紹如何使用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的垃圾郵件分類器,幫助您更好地管理自己的電子郵件,需要的可以參考一下2023-04-04以tensorflow庫(kù)為例講解Pycharm中如何更新第三方庫(kù)
這篇文章主要介紹了以tensorflow庫(kù)為例講解Pycharm中如何更新第三方庫(kù),文章介紹有詳細(xì)流程,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)工作有所幫助2022-03-03最新評(píng)論