利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白
以下核心代碼參考黑客帝國的界面的雨滴圖和網(wǎng)友的愛心素材
一 音樂播放
def alarm(): # 初始化模 pygame.init() pygame.mixer.init() # 加載一個(gè)音樂 file = r'C:\Users\95853\PycharmProjects\contanctoracle\.mp3' pygame.mixer.music.load(file) pygame.mixer.music.play() time.sleep(65) # 播放65秒 pygame.mixer.music.stop() # 停止播放
二 愛心創(chuàng)建
def rainmake(canvas, imagefile): rainlist = [] for i in range(20): # 根據(jù)圖片,創(chuàng)建一排心 rainlist.append(canvas.create_image(100 + 80 * i, INIT_HEIGHT, anchor=NE, image=imagefile)) return rainlist
三 愛心下落
ef raindown(tk, canvas, imagefile, sec): # 線程間等待 time.sleep(sec) rainlist = rainmake(canvas, imagefile) # 每顆心的縱坐標(biāo)值 height = [INIT_HEIGHT] * 20 while True: # 每次移動前稍等一會 time.sleep(0.2) # 20顆心一起移動 for i in range(20): # 如果這顆心到底了,則不繼續(xù)移動,否則height重置就無效了 if not height[i] == 0: # 設(shè)置下落步調(diào) rnd = random.randint(5, 50) canvas.move(rainlist[i], 0, rnd) height[i] = height[i] + rnd tk.update() for i, h in enumerate(height): if h > 600: # 當(dāng)這顆心走到最下方,則刪除 canvas.delete(rainlist[i]) tk.update() # 清空這顆心的height height[i] = 0 print(i, h, height) # 20顆心全到底,則跳出循環(huán) if height == [0] * 20: print('break:', threading.current_thread().name) break
四 展示表白語
def lookloop(tk, canvas, thread): aliveflg = False alarm() while True: # 5s檢測一次 time.sleep(5) for th in thread: if th.is_alive(): aliveflg = True else: aliveflg = False if aliveflg == False: break # Over text = '雨停了,But.I Love You Too...' # canvas.font = "bold 4000px Arial" canvas.create_text(1050, 450, text=text, fill='red', anchor='e', font=('宋體', 40,)) canvas.pack() time.sleep(10) tk.destroy()
五 主函數(shù)創(chuàng)建窗口對象和開啟多線程
def main(): # 創(chuàng)建窗口對象 tk = Tk() tk.title('愛心之雨') canvas_style = { 'bg': 'white', 'height': '1000', 'width': '1400', 'cursor': 'circle' } # 創(chuàng)建畫布 canvas = Canvas(tk, canvas_style) canvas.pack() imagefile = PhotoImage(file="7777777.gif") thread = [] for i in range(60):#60 thread.append(threading.Thread(target=raindown, args=(tk, canvas, imagefile, i))) for t in thread: t.start() # 新開一個(gè)線程監(jiān)控運(yùn)行中的60個(gè)線程 threading.Thread(target=lookloop, args=(tk, canvas, thread)).start()
效果如下圖:
動態(tài)愛心下落時(shí),播放音樂,播完后展示一句表白話。
總結(jié)
到此這篇關(guān)于利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白的文章就介紹到這了,更多相關(guān)python實(shí)現(xiàn)全屏愛心雨內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)戰(zhàn)小游戲之考驗(yàn)記憶力
本篇文章介紹了用python編寫的曾經(jīng)風(fēng)靡的考驗(yàn)記憶力的小游戲,詳細(xì)介紹了整個(gè)思路和過程以及代碼,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-09-09Python爬蟲小技巧之偽造隨機(jī)的User-Agent
這篇文章主要給大家介紹了關(guān)于Python爬蟲小技巧之偽造隨機(jī)的User-Agent的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09使用APScheduler3.0.1 實(shí)現(xiàn)定時(shí)任務(wù)的方法
今天小編就為大家分享一篇使用APScheduler3.0.1 實(shí)現(xiàn)定時(shí)任務(wù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07python基于tkinter制作下班倒計(jì)時(shí)工具
這篇文章主要介紹了python基于tkinter制作倒計(jì)時(shí)工具的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04