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中xrange和range的区别
May 13 Python
Python计算程序运行时间的方法
Dec 13 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python实现求最长回文子串长度
Jan 22 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
python中的句柄操作的方法示例
Jun 20 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python验证码截取识别代码实例
May 16 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 如何向 MySQL 发送数据
2006/10/09 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
详解python中的文件与目录操作
2017/07/11 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
python清除函数占用的内存方法
2018/06/25 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Linux开机引导的步骤是什么
2015/10/19 面试题
期中考试后的感想
2015/08/07 职场文书
学生会干部任命书
2015/09/21 职场文书
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL