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 相关文章推荐
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
Django1.11自带分页器paginator的使用方法
Oct 31 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
python爬虫请求头的使用
Dec 01 Python
python中reload重载实例用法
Dec 15 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
健身房被搭讪?用python写了个小米计时器助人为乐
Jun 08 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 计算两个时间段之间交集的天数示例
2019/10/24 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js切换光标示例代码
2013/10/10 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
Underscore源码分析
2015/12/30 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
Python实现字典的key和values的交换
2015/08/04 Python
使用numba对Python运算加速的方法
2018/10/15 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
腾讯广告词
2014/03/19 职场文书
购房意向书范本
2014/04/01 职场文书
护士感人事迹
2014/05/01 职场文书
2014全年工作总结
2014/11/27 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
贷款担保书范本
2015/09/22 职场文书
协议书格式模板
2016/03/24 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript