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字典操作简明总结
Apr 13 Python
老生常谈Python进阶之装饰器
May 11 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
详解Python3定时器任务代码
Sep 23 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
python函数定义和调用过程详解
Feb 09 Python
你需要学会的8个Python列表技巧
Jun 24 Python
简单的命令查看安装的python版本号
Aug 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 print EOF实现方法
2009/05/21 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
jquery实现瀑布流效果分享
2014/03/26 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
农民工工资发放承诺书
2014/03/31 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
温馨提示标语
2014/06/26 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
化验室安全管理制度
2015/08/06 职场文书