python使用Tkinter實現(xiàn)在線音樂播放器
本文實例使用Tkinter實現(xiàn)在線音樂播放器的具體代碼,供大家參考,具體內(nèi)容如下
1.先使用Tkinter庫寫界面
2.寫點擊按鈕觸發(fā)的事件
(1).使用網(wǎng)易音樂的api,返回數(shù)據(jù)包裝成json格式數(shù)據(jù),解析數(shù)據(jù)
(2)涉及到多線程的問題未解決,一個軟件默認打開一個線程,當播放歌曲時,顯示界面就會卡掉,導致python停止工作
代碼:
#coding=utf-8 from Tkinter import * import tkMessageBox import urllib import json import mp3play import time musicList = [] #定義點擊按鈕響應的函數(shù) def music(): #print "按鈕點擊" #先判斷用戶是否在編輯框輸入了內(nèi)容 if E.get() == '': #發(fā)出警告,需要先import tkMessageBox tkMessageBox.showinfo("提示:","請先輸入內(nèi)容!") #使用return,當滿足前面的條件時,不在往下執(zhí)行 return #使用網(wǎng)易api,發(fā)送請求,需要import urllib #報錯,需要將漢字編碼程ascii,才能添加到鏈接中 name = E.get().encode('utf-8') name = urllib.quote(name) html = urllib.urlopen('http://s.music.163.com/search/get/?type=1&s=%s&limit=9'%name).read() #返回json格式數(shù)據(jù),可用正則匹配需要數(shù)據(jù),也可使用json.loads() print html #將返回文件轉(zhuǎn)化為json格式,提取所需要的數(shù)據(jù),需要import json a = json.loads(html) #print a print a[u'result'][u'songs'][0][u'album'][u'name'] #將所有結(jié)果顯示在列表中 #print len(a[u'result'][u'songs'][0]) for i in range(len(a[u'result'][u'songs'][0])): #注意insert參數(shù) LB.insert(i,a[u'result'][u'songs'][i][u'album'][u'name']+"("+a[u'result'][u'songs'][i][u'artists'][0][u'name']+")") #先獲取到歌曲url列表 musicList.append(a[u'result'][u'songs'][i][u'audio']) #定義雙擊列表響應函數(shù) def play(event): #獲取點擊后返回的結(jié)果curselection() #print LB.curselection()[0] urlnum = LB.curselection()[0] #不用流媒體播放,先下載下來再播放 # urllib.urlretrieve(musicList[urlnum],'1.mp3') # #播放歌曲,調(diào)用import mp3play # time.sleep(50) clip = mp3play.load('1.mp3') clip.play() #設(shè)置播放時間import time time.sleep(min(300, clip.seconds())) #死機了,無法響應,因為線程的問題!?。。。?! #一個線程同一時間只能做一件事情,放歌時需再開一個線程 #創(chuàng)建父窗口對象, top = Tk() #可以設(shè)置窗口的屬性,如:標題,大小 top.title("在線音樂播放器——張強") top.geometry('500x300+800+300') #創(chuàng)建編輯框,放到父窗口top上,用pack顯示 E = Entry(top) E.pack() #創(chuàng)建按鈕,定義按鈕觸發(fā)的函數(shù)command B = Button(top,text="搜 索",command = music) B.pack() #定義列表的響應函數(shù) LB = Listbox(top,width = '50',listvariable = StringVar()) #綁定觸發(fā)事件的方式-雙擊左鍵,和響應函數(shù) LB.bind('<Double-Button-1>',play) LB.pack()#要放到最后 #定義標簽 label = Label(top,text = "歡迎使用!",fg = 'red') label.pack() #循環(huán)向windows發(fā)送消息,用于顯示窗口 top.mainloop()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- python 制作簡單的音樂播放器
- 基于python實現(xiàn)音樂播放器代碼實例
- python實現(xiàn)可下載音樂的音樂播放器
- python實現(xiàn)音樂播放器 python實現(xiàn)花框音樂盒子
- Python使用PyQt5/PySide2編寫一個極簡的音樂播放器功能
- Python調(diào)用Windows API函數(shù)編寫錄音機和音樂播放器功能
- python實現(xiàn)簡易云音樂播放器
- Python實現(xiàn)在線音樂播放器
- python開發(fā)簡易版在線音樂播放器
- python3音樂播放器簡單實現(xiàn)代碼
- Python趣味挑戰(zhàn)之實現(xiàn)簡易版音樂播放器
相關(guān)文章
淺談flask截獲所有訪問及before/after_request修飾器
這篇文章主要介紹了淺談flask截獲所有訪問及before/after_request修飾器,具有一定借鑒價值,需要的朋友可以參考下2018-01-01Python Mysql數(shù)據(jù)庫操作 Perl操作Mysql數(shù)據(jù)庫
python對mysql數(shù)據(jù)庫的一些操作實現(xiàn)代碼2009-01-01Python?常用內(nèi)置模塊超詳細梳理總結(jié)
模塊是一個包含索引你定義的函數(shù)和變量的文件,其擴展名為.py。模塊可以被其他程序引入,以使用該模塊中的函數(shù)等功能。這也是使用python標準庫的方法2022-03-03使用Python3編寫抓取網(wǎng)頁和只抓網(wǎng)頁圖片的腳本
這篇文章主要介紹了使用Python3編寫抓取網(wǎng)頁和只抓網(wǎng)頁圖片的腳本,使用到了urllib模塊,需要的朋友可以參考下2015-08-08Python使用functools實現(xiàn)注解同步方法
這篇文章主要介紹了Python使用functools實現(xiàn)注解同步方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-02-02