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 相关文章推荐
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
python通过tcp发送xml报文的方法
Dec 28 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python利用7z批量解压rar的实现
Aug 07 Python
python日志模块logbook使用方法
Sep 19 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
python导入库的具体方法
Jun 18 Python
Django ModelForm组件原理及用法详解
Oct 12 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
图书管理程序(二)
2006/10/09 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
php中的常用魔术方法总结
2013/08/02 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
vue按需加载实例详解
2019/09/06 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
如何使用python代码操作git代码
2020/02/29 Python
Python爬取某平台短视频的方法
2021/02/08 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
会计专业大学生职业生涯规划书
2014/02/11 职场文书
英文自荐信常用句子
2014/03/26 职场文书
建筑工地标语
2014/06/18 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书