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中用startswith()函数判断字符串开头的教程
Apr 07 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
python读取与写入csv格式文件的示例代码
Dec 16 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
python分块读取大数据,避免内存不足的方法
Dec 10 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 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 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
JSONP跨域请求
2017/03/02 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
puppeteer库入门初探
2019/01/09 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python实现获取Ip归属地等信息
2016/08/27 Python
使用Python对Access读写操作
2017/03/30 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python对视频画框标记后保存的方法
2018/12/07 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
python3.6编写的单元测试示例
2019/08/17 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
python3将变量输入的简单实例
2020/08/19 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
经济类毕业生求职信
2014/06/26 职场文书
圣诞节开幕词
2015/01/29 职场文书
员工手册董事长致辞
2015/07/29 职场文书
工作感想范文
2015/08/07 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
Jsonp劫持学习
2021/04/01 PHP
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers