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中os模块详解
Oct 14 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
查看django版本的方法分享
May 14 Python
django的登录注册系统的示例代码
May 14 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
对python 调用类属性的方法详解
Jul 02 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
Python字符串及文本模式方法详解
Sep 10 Python
pandas中关于apply+lambda的应用
Feb 28 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
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
javascript动态加载二
2012/08/22 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python采集百度百科的方法
2015/06/05 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
python实现web方式logview的方法
2015/08/10 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
日语求职信范文
2013/12/17 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
六一儿童节主持词
2014/03/21 职场文书
应急处置方案
2014/06/16 职场文书
节约粮食标语
2014/06/18 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL