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下wxPython开发环境安装与配置方法
Jun 28 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
Python计时相关操作详解【time,datetime】
May 26 Python
Python2随机数列生成器简单实例
Sep 04 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
Django实现简单分页功能的方法详解
Dec 05 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
Python 如何反方向迭代一个序列
Jul 28 Python
使用Python实现NBA球员数据查询小程序功能
Nov 09 Python
Python使用openpyxl批量处理数据
Jun 23 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新手上路(八)
2006/10/09 PHP
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
Python中的yield浅析
2014/06/16 Python
django中的setting最佳配置小结
2017/11/21 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
Python中的asyncio代码详解
2019/06/10 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
应届生求职自荐信
2014/07/04 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android