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找出list中最常出现元素的方法
Jun 14 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python实现聊天机器人的示例代码
Jul 09 Python
有关Python的22个编程技巧
Aug 29 Python
详解Python发送email的三种方式
Oct 18 Python
python使用matplotlib绘制热图
Nov 07 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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中的类型约束介绍
2015/05/11 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
动态加载js和css(外部文件)
2013/04/17 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python 中的 else详解
2016/04/23 Python
python实现名片管理系统
2018/11/29 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
python实现打砖块游戏
2020/02/25 Python
python实现手势识别的示例(入门)
2020/04/15 Python
维也纳通行证:Vienna PASS
2019/07/18 全球购物
函授教育个人学习的自我评价
2013/12/31 职场文书
外贸业务员求职信
2014/06/16 职场文书
会计学毕业生求职信
2014/06/25 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS