利用python實(shí)現(xiàn)全屏愛(ài)心雨向喜歡的人表白
以下核心代碼參考黑客帝國(guó)的界面的雨滴圖和網(wǎng)友的愛(ài)心素材
一 音樂(lè)播放
def alarm():
# 初始化模
pygame.init()
pygame.mixer.init()
# 加載一個(gè)音樂(lè)
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() # 停止播放二 愛(ài)心創(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三 愛(ài)心下落
ef raindown(tk, canvas, imagefile, sec):
# 線程間等待
time.sleep(sec)
rainlist = rainmake(canvas, imagefile)
# 每顆心的縱坐標(biāo)值
height = [INIT_HEIGHT] * 20
while True:
# 每次移動(dòng)前稍等一會(huì)
time.sleep(0.2)
# 20顆心一起移動(dòng)
for i in range(20):
# 如果這顆心到底了,則不繼續(xù)移動(dòng),否則height重置就無(wú)效了
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四 展示表白語(yǔ)
def lookloop(tk, canvas, thread):
aliveflg = False
alarm()
while True:
# 5s檢測(cè)一次
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)建窗口對(duì)象和開啟多線程
def main():
# 創(chuàng)建窗口對(duì)象
tk = Tk()
tk.title('愛(ài)心之雨')
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()效果如下圖:
動(dòng)態(tài)愛(ài)心下落時(shí),播放音樂(lè),播完后展示一句表白話。

總結(jié)
到此這篇關(guān)于利用python實(shí)現(xiàn)全屏愛(ài)心雨向喜歡的人表白的文章就介紹到這了,更多相關(guān)python實(shí)現(xiàn)全屏愛(ài)心雨內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)備份文件實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)備份文件的方法,可實(shí)現(xiàn)針對(duì)各類常見(jiàn)擴(kuò)展名的文件進(jìn)行備份的功能,需要的朋友可以參考下2014-09-09
Python根據(jù)字典的值查詢出對(duì)應(yīng)的鍵的方法
這篇文章主要介紹了Python根據(jù)字典的值查詢出對(duì)應(yīng)的鍵的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python實(shí)現(xiàn)文本文件拆分寫入到多個(gè)文本文件的方法
這篇文章主要介紹了Python實(shí)現(xiàn)文本文件拆分寫入到多個(gè)文本文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
python實(shí)現(xiàn)word 2007文檔轉(zhuǎn)換為pdf文件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)word 2007文檔轉(zhuǎn)換為pdf文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Python內(nèi)建函數(shù)Built_in Funtions用法示例詳解
這篇文章主要為大家介紹了Python內(nèi)建函數(shù)Built_in Funtions用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
使用python-magic和wxPython實(shí)現(xiàn)識(shí)別文檔類型
這篇文章主要介紹了如何使用python-magic模塊和wxPython庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的文件列表應(yīng)用程序,該應(yīng)用程序可以顯示所選文件夾中文件的類型,需要的可以參考下2023-08-08
Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié)
本文主要介紹了Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

