欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于python實(shí)現(xiàn)新春煙花盛宴效果

 更新時(shí)間:2024年02月05日 10:32:07   作者:Want595  
這篇文章給大家用Python綻放了一場新春煙花盛宴,這里提前祝大家新春快樂呀,文中通過代碼示例給大家介紹的非常詳細(xì),感興趣的小伙伴可以自己動(dòng)手嘗試一下

效果預(yù)覽

環(huán)境需求

  • python3.11.4及以上
  • PyCharm Community Edition 2023.2.5
  • pyinstaller6.2.0(可選,這個(gè)庫用于打包,使程序沒有python環(huán)境也可以運(yùn)行,如果想發(fā)給好朋友的話需要這個(gè)庫哦~)

【注】

新春煙花

程序設(shè)計(jì)

# 導(dǎo)入必要的庫
import tkinter  # 導(dǎo)入tkinter庫用于GUI
import random  # 導(dǎo)入random庫用于生成隨機(jī)數(shù)
 
# 函數(shù):將窗口居中顯示
def center_window(window, width, height):
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()
 
    x = (screen_width - width) // 2
    y = (screen_height - height) // 2
 
    window.geometry(f'{width}x{height}+{x}+{y}')  # 設(shè)置窗口的位置和大小
 
# 函數(shù):生成隨機(jī)顏色
def color():
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    return f'#{r:02x}{g:02x}{b:02x}'  # 返回隨機(jī)顏色值的字符串表示
 
# 創(chuàng)建主窗口
root = tkinter.Tk()  # 創(chuàng)建主窗口對(duì)象
root.title("新春煙花")  # 設(shè)置窗口標(biāo)題
width = 888
height = 666
center_window(root, width, height)  # 調(diào)用center_window函數(shù)將窗口居中顯示
 
# 創(chuàng)建畫布
canvas = tkinter.Canvas(root, bg='black')  # 創(chuàng)建畫布對(duì)象,背景色為黑色
canvas.pack(fill=tkinter.BOTH, expand=1)  # 將畫布填滿整個(gè)窗口并擴(kuò)展
 
# 鼠標(biāo)點(diǎn)擊事件處理函數(shù)
def on_click(event):
    x = event.x
    y = event.y
    firework = Firework(canvas, x, y)  # 創(chuàng)建Firework對(duì)象
    firework.fire()  # 發(fā)射煙花
 
# 綁定鼠標(biāo)點(diǎn)擊事件
canvas.bind('<Button-1>', on_click)
 
# 運(yùn)行主循環(huán)
root.mainloop()  # 啟動(dòng)主循環(huán),等待用戶交互事件
 
……(完整代碼見文末系列文章哦)

程序分析

這段代碼是使用Python的Tkinter庫創(chuàng)建的一個(gè)簡單GUI應(yīng)用程序,模擬了新春煙花的效果。程序的主要功能是在用戶點(diǎn)擊畫布時(shí),在鼠標(biāo)點(diǎn)擊的位置生成并動(dòng)態(tài)展示煙花效果。

代碼結(jié)構(gòu)與功能概述:

1. 導(dǎo)入所需的庫:

   - `tkinter`:用于構(gòu)建圖形用戶界面(GUI)的基礎(chǔ)庫。

   - `random`:用于生成隨機(jī)數(shù)以實(shí)現(xiàn)不同顏色和粒子運(yùn)動(dòng)軌跡的變化。

2. 定義輔助函數(shù):

   - `center_window(window, width, height)`:接受窗口對(duì)象、寬度和高度參數(shù),計(jì)算窗口在屏幕上的居中坐標(biāo),并設(shè)置窗口大小和位置。

3. 定義一個(gè)生成隨機(jī)顏色的方法 `color()`,返回一個(gè)隨機(jī)RGB值表示的顏色字符串。

4. 定義了一個(gè)名為`Firework`的類,其包含以下方法:

   - `__init__(self, canvas, x, y)`:初始化煙花對(duì)象,包括畫布引用、初始坐標(biāo)、隨機(jī)顏色以及煙花粒子列表。

   - `create_particles(self)`:為煙花生成一定數(shù)量(99個(gè))的隨機(jī)速度的粒子,每個(gè)粒子用橢圓表示,并存儲(chǔ)粒子ID及其速度信息。

   - `update(self)`:更新煙花狀態(tài),增加粒子半徑、減少壽命,并根據(jù)粒子速度移動(dòng)粒子,移除超出畫布范圍的粒子。

   - `fire(self)`:在畫布上繪制出煙花主體,并啟動(dòng)定時(shí)器調(diào)用`launch`方法開始連續(xù)更新煙花狀態(tài)。

   - `launch(self)`:連續(xù)執(zhí)行`update`方法,當(dāng)所有粒子消失或煙花壽命結(jié)束時(shí)從畫布上刪除煙花。

5. 創(chuàng)建主窗口`root`,設(shè)置標(biāo)題和窗口尺寸,并調(diào)用`center_window`將其居中顯示。

6. 在窗口內(nèi)創(chuàng)建一個(gè)黑色背景的畫布,并將畫布填滿整個(gè)窗口。

7. 定義鼠標(biāo)點(diǎn)擊事件處理函數(shù)`on_click(event)`,在鼠標(biāo)左鍵點(diǎn)擊時(shí),根據(jù)點(diǎn)擊坐標(biāo)創(chuàng)建一個(gè)`Firework`實(shí)例并發(fā)射煙花。

8. 將鼠標(biāo)點(diǎn)擊事件綁定到畫布上。

9. 最后運(yùn)行主循環(huán)`root.mainloop()`,持續(xù)監(jiān)聽用戶交互和GUI事件,直到窗口被關(guān)閉。

通過這個(gè)程序,用戶可以在畫布上任意位置點(diǎn)擊來觸發(fā)煙花動(dòng)畫,每朵煙花由多個(gè)隨機(jī)顏色和方向的粒子組成,粒子會(huì)按照設(shè)定的速度在畫布上移動(dòng),逐漸擴(kuò)散并最終消失,從而模擬出真實(shí)的煙花綻放和消散的效果。

運(yùn)行結(jié)果

寫在最后

到此這篇關(guān)于基于python實(shí)現(xiàn)新春煙花盛宴效果的文章就介紹到這了,更多相關(guān)python新春煙花效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)socket簡單通信的示例代碼

    python實(shí)現(xiàn)socket簡單通信的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)socket簡單通信的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Ubuntu安裝Python3.8的兩種方法詳解

    Ubuntu安裝Python3.8的兩種方法詳解

    這篇文章主要給大家介紹了關(guān)于Ubuntu安裝Python3.8的兩種方法,在Ubuntu上安裝Python非常簡單,文中介紹了兩種方法,每種方法都給出了詳細(xì)實(shí)例,需要的朋友可以參考下
    2023-09-09
  • python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng)

    python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python中enumerate的用法實(shí)例解析

    python中enumerate的用法實(shí)例解析

    這篇文章主要介紹了python中enumerate的用法,對(duì)Python初學(xué)者而言是非常重要的概念,需要的朋友可以參考下
    2014-08-08
  • Python函數(shù)和模塊的使用詳情

    Python函數(shù)和模塊的使用詳情

    這篇文章主要介紹了Python函數(shù)和模塊的使用詳情,文章基于python的相關(guān)資料展開主題的具體介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Cpy和Python的效率對(duì)比

    Cpy和Python的效率對(duì)比

    這篇文章主要介紹了Cpy和Python的效率對(duì)比,本文用一個(gè)循環(huán) 100000000 遍的代碼對(duì)比了Cpy和Python運(yùn)行效率測試,需要的朋友可以參考下
    2015-03-03
  • 詳解Python中的枚舉類型

    詳解Python中的枚舉類型

    枚舉(Enum)是一種數(shù)據(jù)類型,是綁定到唯一值的符號(hào)表示。。本文就來和大家聊聊Python中的枚舉類型,為什么需要枚舉類型,及如何使用
    2022-08-08
  • Pytorch中如何調(diào)用forward()函數(shù)

    Pytorch中如何調(diào)用forward()函數(shù)

    這篇文章主要介紹了Pytorch中如何調(diào)用forward()函數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python運(yùn)算符+條件結(jié)構(gòu)+循環(huán)結(jié)構(gòu)

    python運(yùn)算符+條件結(jié)構(gòu)+循環(huán)結(jié)構(gòu)

    這篇文章主要介紹了python運(yùn)算符、條件結(jié)構(gòu)、循環(huán)結(jié)構(gòu);算術(shù)運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符等一些相關(guān)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-03-03
  • Python對(duì)130w+張圖片檢索的實(shí)現(xiàn)方法

    Python對(duì)130w+張圖片檢索的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Python對(duì)130w+張圖片檢索的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論