国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用Tkinter實現(xiàn)在線音樂播放器

2020-01-04 16:01:22
字體:
供稿:網(wǎng)友

本文實例使用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)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 铜陵市| 宁远县| 呼和浩特市| 古田县| 页游| 库车县| 石林| 诏安县| 峡江县| 孝昌县| 韶关市| 全州县| 都安| 阳城县| 五华县| 东平县| 遂宁市| 望谟县| 钦州市| 兰西县| 玉田县| 旬阳县| 田林县| 朝阳区| 德阳市| 辽宁省| 嘉祥县| 津市市| 民丰县| 诏安县| 巴东县| 富民县| 长顺县| 鲁甸县| 庆阳市| 肃北| 习水县| 商城县| 东辽县| 工布江达县| 宿迁市|