91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用Tkinter實現在線音樂播放器

發布時間:2020-09-12 13:33:14 來源:腳本之家 閱讀:184 作者:zhangqiang1104 欄目:開發技術

本文實例使用Tkinter實現在線音樂播放器的具體代碼,供大家參考,具體內容如下

1.先使用Tkinter庫寫界面
2.寫點擊按鈕觸發的事件

(1).使用網易音樂的api,返回數據包裝成json格式數據,解析數據
(2)涉及到多線程的問題未解決,一個軟件默認打開一個線程,當播放歌曲時,顯示界面就會卡掉,導致python停止工作

代碼:

#coding=utf-8 
 
from Tkinter import * 
import tkMessageBox 
import urllib 
import json 
import mp3play 
import time 
 
musicList = [] 
 
#定義點擊按鈕響應的函數 
def music(): 
 #print "按鈕點擊" 
 #先判斷用戶是否在編輯框輸入了內容 
 if E.get() == '': 
 #發出警告,需要先import tkMessageBox 
 tkMessageBox.showinfo("提示:","請先輸入內容!") 
 #使用return,當滿足前面的條件時,不在往下執行 
 return 
 #使用網易api,發送請求,需要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格式數據,可用正則匹配需要數據,也可使用json.loads() 
 print html 
 #將返回文件轉化為json格式,提取所需要的數據,需要import json 
 a = json.loads(html) 
 #print a 
 print a[u'result'][u'songs'][0][u'album'][u'name'] 
 #將所有結果顯示在列表中 
 #print len(a[u'result'][u'songs'][0]) 
 for i in range(len(a[u'result'][u'songs'][0])): 
 #注意insert參數 
 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']) 
#定義雙擊列表響應函數 
 
def play(event): 
 #獲取點擊后返回的結果curselection() 
 #print LB.curselection()[0] 
 urlnum = LB.curselection()[0] 
 #不用流媒體播放,先下載下來再播放 
 # urllib.urlretrieve(musicList[urlnum],'1.mp3') 
 # #播放歌曲,調用import mp3play 
 # time.sleep(50) 
 clip = mp3play.load('1.mp3') 
 clip.play() 
 #設置播放時間import time 
 time.sleep(min(300, clip.seconds())) 
 #死機了,無法響應,因為線程的問題!!!!!! 
 #一個線程同一時間只能做一件事情,放歌時需再開一個線程 
 
#創建父窗口對象, 
top = Tk() 
#可以設置窗口的屬性,如:標題,大小 
top.title("在線音樂播放器——張強") 
top.geometry('500x300+800+300') 
#創建編輯框,放到父窗口top上,用pack顯示 
E = Entry(top) 
E.pack() 
#創建按鈕,定義按鈕觸發的函數command 
B = Button(top,text="搜 索",command = music) 
B.pack() 
#定義列表的響應函數 
LB = Listbox(top,width = '50',listvariable = StringVar()) 
#綁定觸發事件的方式-雙擊左鍵,和響應函數 
LB.bind('<Double-Button-1>',play) 
LB.pack()#要放到最后 
#定義標簽 
label = Label(top,text = "歡迎使用!",fg = 'red') 
label.pack() 
#循環向windows發送消息,用于顯示窗口 
top.mainloop() 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宽甸| 南江县| 漾濞| 都兰县| 新蔡县| 莱西市| 沧州市| 屏山县| 衢州市| 尖扎县| 呼伦贝尔市| 惠水县| 玛纳斯县| 兴国县| 犍为县| 莎车县| 清水河县| 凯里市| 海南省| 曲阳县| 丰镇市| 沂水县| 遂平县| 夏津县| 奉贤区| 塘沽区| 樟树市| 漳浦县| 静安区| 宁蒗| 孟州市| 山阴县| 防城港市| 鸡西市| 石景山区| 江城| 磐安县| 凤山县| 南和县| 阳新县| 通渭县|