python使用Tkinter实现在线音乐播放器


Posted in Python onJanuary 30, 2018

本文实例使用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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
在Python的Django框架中包装视图函数
Jul 20 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
用python实现的线程池实例代码
Jan 06 Python
Django框架自定义session处理操作示例
May 27 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
Python字典及字典基本操作方法详解
Jan 30 #Python
Python操作MySQL数据库的三种方法总结
Jan 30 #Python
python3.5 tkinter实现页面跳转
Jan 30 #Python
python 连接各类主流数据库的实例代码
Jan 30 #Python
python操作oracle的完整教程分享
Jan 30 #Python
Python使用wxPython实现计算器
Jan 30 #Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 #Python
You might like
实用函数4
2007/11/08 PHP
PHP时间戳使用实例代码
2008/06/07 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
php时间函数用法分析
2016/05/28 PHP
javascript自然分类法算法实现代码
2013/10/11 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
微信小程序背景音乐开发详解
2019/12/12 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
python实现socket端口重定向示例
2014/02/10 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
对numpy中轴与维度的理解
2018/04/18 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
浅析Python 多行匹配模式
2020/07/24 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
企业治理工作自我评价
2013/09/26 职场文书
户外婚礼策划方案
2014/02/08 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
个人委托函范文
2015/01/29 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
python 如何用terminal输入参数
2021/05/25 Python
Java线程的6种状态与生命周期
2022/05/11 Java/Android