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 30 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
python机器人行走步数问题的解决
Jan 29 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
python实现监控阿里云账户余额功能
Dec 16 Python
Python PyQt5模块实现窗口GUI界面代码实例
May 12 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
python 19个值得学习的编程技巧
Aug 15 Python
利用python爬取有道词典的方法
Dec 08 Python
python和opencv构建运动检测器的实现
Mar 03 Python
python模板入门教程之flask Jinja
Apr 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 数据结构 算法 三元组 Triplet
2011/07/02 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
javascript 写类方式之八
2009/07/05 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
简述Python中的面向对象编程的概念
2015/04/27 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
python实现连续图文识别
2018/12/18 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
keras的三种模型实现与区别说明
2020/07/03 Python
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
项目管理计划书
2014/01/09 职场文书
会计学生自我鉴定
2014/02/06 职场文书
高中班主任评语大全
2014/04/25 职场文书
青年标兵事迹材料
2014/08/16 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL