python没有pygame_教程丨python 做一个简单的MP3
↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能后臺回復(fù)【大禮包】送你Python自學(xué)大禮
來源丨速學(xué)Python
https://mp.weixin.qq.com/s/C9doSoz0uHn2VAApBuGsNg
本節(jié)將教大家如何做一個簡單的mp3,希望大家能有所收獲,寫的不足之處望大家諒解。
廢話少說,直接上代碼:
#!/usr/bin/env python# -*- coding: utf-8 -*-import pygameimport osfrom tkinter import *root = Tk()root.title('老婆專用播放器')root.geometry('800x600')pygame.init()music_path = r'C:\Users\zlcao\Music'current_play = 'R3hab - Skydrop (Radio Edit).mp3'music_name = StringVar()def play(): music_name.set(current_play) pygame.mixer.music.load(os.path.join(music_path, current_play)) pygame.mixer.music.play()Label(root, textvariable=music_name, font=('宋體', 14), justify='center', bg='#ADD8E6').place(relx=0, rely=0.1, relwidth=1, relheight=0.3)Button(root, text="播放", command=play).place(relx=0, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="暫停", command=lambda: pygame.mixer.music.pause()).place(relx=0.2, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="恢復(fù)", command=lambda: pygame.mixer.music.unpause()).place(relx=0.4, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="停止", command=lambda: pygame.mixer.music.stop()).place(relx=0.6, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="重播", command=lambda: pygame.mixer.music.rewind()).place(relx=0.8, rely=0.5, relwidth=0.2, relheight=0.1)root.mainloop()代碼運行效果
先吐槽一下,代碼沒有粘貼出應(yīng)有的效果,不知道是不是我使用的姿勢不對。
首先我們使用pygame庫來支持音頻處理,pygame是python的一個游戲庫,有興趣的童鞋可以了解一下。
pygame.init() 意思是初始化所有導(dǎo)入的pygame模塊
music_name = StringVar() 這句話聲明了一個StringVar對象,他配合Label, Button的textvarable屬性來實現(xiàn)變量更新,界面顯示字符更新的功能。
pygame.mixer.music.load(os.path.join(music_path, current_play))加載一個音頻文件
pygame.mixer.music.play()播放加載的音頻文件
Label(root, textvariable=music_name, font=('宋體', 14), justify='center', bg='#ADD8E6').place(relx=0, rely=0.1, relwidth=1, relheight=0.3)加載一個Label控件,該label控件的文字受StingVar類型的變量music_name 控制,可以通過music_name.set() 來改變label顯示的文字。font=('宋體', 14) 指定label控件的字體為宋體,字體大小為14號。justify屬性用來設(shè)置label控件的對齊方式,bg 是background的縮寫,指定label控件的背景色,如果要設(shè)置字體顏色,可以使用fg(foreground),用法同bg一樣。
place是tk 的一種布局方式, tkinter共有三種布局方式,pack, grid, place
relx和rely是相對父控件的位置。0是最左邊,0.5是正中間,1是最右邊
relwidth, relheight是相對父控件的大小。例如 relwidth=0.1相當(dāng)于父控件寬度的0.1倍。
lambda是匿名函數(shù),如果一個函數(shù)不想命名又沒有復(fù)雜的功能的情況下,可以使用匿名函 數(shù),可以讓代碼更為簡潔。如何理解lambda呢,我舉個例子。
比如func = lambda x: x+1 等同于
def func(x): return(x+1)x是入?yún)?#xff0c;x+1是函數(shù)體里的執(zhí)行語句并返回結(jié)果。
有些人可能會說,這些我都懂了,我如何能豐富我的界面功能了,這個也太簡陋了
low
這里我搜集了一些給大家提供一些參考
pygame.mixer.music.load() —— 載入一個音樂文件用于播放pygame.mixer.music.play() —— 開始播放音樂流pygame.mixer.music.rewind() —— 重新開始播放音樂pygame.mixer.music.stop() —— 結(jié)束音樂播放pygame.mixer.music.pause() —— 暫停音樂播放pygame.mixer.music.unpause() —— 恢復(fù)音樂播放pygame.mixer.music.fadeout() —— 淡出的效果結(jié)束音樂播放pygame.mixer.music.set_volume() —— 設(shè)置音量pygame.mixer.music.get_volume() —— 獲取音量pygame.mixer.music.get_busy() —— 檢查是否正在播放音樂pygame.mixer.music.set_pos() —— 設(shè)置播放的位置pygame.mixer.music.get_pos() —— 獲取播放的位置pygame.mixer.music.queue() —— 將一個音樂文件放入隊列中,并排在當(dāng)前播放的音樂之后pygame.mixer.music.set_endevent() —— 當(dāng)播放結(jié)束時發(fā)出一個事件pygame.mixer.music.get_endevent() —— 獲取播放結(jié)束時發(fā)送的事件大家可以在我這個程序的基礎(chǔ)上繼續(xù)完善和改進(jìn),可以添加上一首下一首功能,也可以添加播放列表(treeview去做),感興趣的童鞋可以加我討論,一定知無不言言無不盡。最后通過pyinstaller打包成exe就好了,具體打包方法大家可以自行探索,另外希望大家多多支持。
------end------推薦閱讀再見,VS Code !你好,GitHub!
這款網(wǎng)絡(luò)排查工具,堪稱神器!
我的天!思科前員工刪庫跑路,損失達(dá) 1600 多萬
高中生寫LOL外掛1年狂賺500萬,落網(wǎng)前剛買百萬保時捷...
神器DeskGo!
破解TA朋友圈“僅三天可見”
如何掌握Python,一舉拿下大廠的高薪offer呢?
推薦我的微信號
來圍觀我的朋友圈,我的經(jīng)驗分享,技術(shù)更新,不定期送書,坑位有限,速速掃碼添加
備注:開發(fā)方向_昵稱_城市,另送你10本Python電子書,
在看點這里好文分享給更多人↓↓
總結(jié)
以上是生活随笔為你收集整理的python没有pygame_教程丨python 做一个简单的MP3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索引超出数组界限是什么意思_从V8源码分
- 下一篇: python double free_p