当前位置:
首页 > temp > python入门教程 >
-
Python tkinter 一个Music download software的界面
前言
本次案例最终实现效果
开发环境
- python 3.8: 解释器
- pycharm: 代码编辑器
界面代码实现
先导入所需模块
import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
创建窗口
root = tk.Tk()
root.title('XXX') # 名字自己起
root.geometry('900x700+200+200')
root.mainloop()
名称搜索框
可以通过Singers, songs的名字搜索
search_frame = tk.Frame(root)
search_frame.pack(pady=20)
Song_va = tk.StringVar()
tk.Label(search_frame, text='自己起:', font=('黑体', 15)).pack(side=tk.LEFT)
tk.Entry(search_frame, relief='flat', textvariable=Song_va).pack(side=tk.LEFT, padx=10)
tk.Button(search_frame, text='搜索', font=('黑体', 12), relief='flat', bg='#f5b488', padx=10).pack(
side=tk.LEFT, padx=2)
保存框
通过序号保存想要的
Down_va = tk.StringVar()
tk.Label(search_frame, text='songs序号:', font=('黑体', 15)).pack(side=tk.LEFT, anchor='e')
tk.Entry(search_frame, relief='flat', textvariable=Down_va).pack(side=tk.LEFT, padx=10)
tk.Button(search_frame, text='下载', font=('黑体', 12), relief='flat', bg='#f5b488', padx=10).pack(
side=tk.LEFT)
tk.Button(search_frame, text='全部', font=('黑体', 12), relief='flat', bg='#f5b488', padx=10).pack(
side=tk.LEFT, padx=5)
显示界面
columns = ('Num', 'MusicId', 'MusicHash', 'SingerName', 'SongName',)
columns_value = ('序号', 'ID', 'Hash', 'Singers', 'songs')
# 使用ttk创建一个树状图
tree_view = ttk.Treeview(root, height=18, show="headings", columns=columns)
# 设置列名
tree_view.column('Num', width=80, anchor='center')
tree_view.column('MusicId', width=80, anchor='center')
tree_view.column('MusicHash', width=80, anchor='center')
tree_view.column('SingerName', width=80, anchor='center')
tree_view.column('SongName', width=80, anchor='center')
# 给列名设置显示的名字
tree_view.heading('Num', text='序号')
tree_view.heading('MusicId', text='ID')
tree_view.heading('MusicHash', text='Hash')
tree_view.heading('SingerName', text='Singers')
tree_view.heading('SongName', text='songs')
tree_view.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
搜索框功能
def Search():
Song_name = Song_va.get()
if len(Song_name) > 1:
MusicInfo = Music.Music(Song_name)
del_select()
for index, dit in enumerate(MusicInfo):
tree_view.insert('', index + 1, values=(
dit['Num'],
dit['MusicId'],
dit['MusicHash'],
dit['SingerName'],
dit['SongName'],
))
else:
tkinter.messagebox.showerror(title='警告', message='输入有误')
song Download
def Download():
Num = Down_va.get()
Song_name = Song_va.get()
if len(Num) > 1 and len(Song_name) > 1:
MusicInfo = Music.Music(Song_name)
dit = MusicInfo[int(Num)]
Music.GetMusic(dit['MusicHash'], dit['MusicId'])
tkinter.messagebox.showinfo(title='温馨提示', message=f'歌曲{dit["SongName"]}下载完成')
else:
tkinter.messagebox.showerror(title='警告', message='输入有误')
Download 全部 songs
def GetAll():
Song_name = Song_va.get()
if len(Song_name) > 1:
MusicInfo = Music.Music(Song_name)
for dit in MusicInfo:
Music.GetMusic(dit['MusicHash'], dit['MusicId'])
else:
tkinter.messagebox.showerror(title='警告', message='输入有误')
出处:https://www.cnblogs.com/qshhl/p/16716023.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数