Python的Tkinter(Tk接口)是一个用于创建图形用户界面(GUI)的标准库。它是Python的内置模块,无需额外安装即可使用。Tkinter提供了一组部件(如按钮、标签、文本框等)和布局管理器,使开发GUI应用程序变得简单和便捷。
Tkinter是一个功能强大且简单易用的库,适合构建轻量级的GUI应用程序。它在不同的操作系统上具有相同的外观和行为,因此可以实现跨平台的应用程序。
展示效果
界面实现
导入所需的库
import tkinter as tk # 导入tkinter库用于创建图形用户界面
from pygame import mixer # 从pygame库导入mixer模块用于音乐播放
import os # 导入os模块用于文件和目录操作
from PIL import Image, ImageTk # 导入PIL库用于处理图片
注意:os模块是自带的,另外的两个都需要安装
创建窗口
# 创建主窗口
root = tk.Tk() # 实例化Tk类
root.title('音乐播放器') # 设置窗口标题
root.resizable(False, False) # 禁止修改窗口大小
root.geometry('440x570+200+200') # 设置窗口大小和位置
root.iconbitmap('music.ico') # 设置窗口图标
root['background'] = '#6176d5' # 设置背景颜色
设置底色和图标
# 加载并显示封面图片
img = Image.open('bg.png') # 打开封面图片
img = ImageTk.PhotoImage(img.resize((300,300))) # 调整图片大小并转换为Tkinter可用的格式
tk.Label(root, image=img, bg='#7184e4').pack(pady=10) # 在窗口中显示图片
添加功能按钮
# 创建按钮框架和按钮
frame_1 = tk.Frame(bg='#6175d6') # 创建一个框架用于按钮
frame_1.pack(pady=10) # 在窗口中放置框架
# 创建上一首、播放、下一首按钮
tk.Button(frame_1, text='上一首', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=last).pack(side=tk.LEFT)
tk.Button(frame_1, text='播放', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=play).pack(side=tk.LEFT, padx=40)
tk.Button(frame_1, text='下一首', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=next_song).pack(side=tk.LEFT)
frame_2 = tk.Frame(bg='#6175d6') # 创建第二个框架
frame_2.pack(pady=10) # 在窗口中放置框架
# 创建音量控制和暂停/继续按钮
tk.Button(frame_2, text='音量↑', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=soundsize_up).pack(side=tk.LEFT)
tk.Button(frame_2, text='暂停', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=stop).pack(side=tk.LEFT, padx=20)
tk.Button(frame_2, text='继续', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=cancel).pack(side=tk.LEFT, padx=20)
tk.Button(frame_2, text='音量↓', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=soundsize_down).pack(side=tk.LEFT)
# 用于显示当前歌曲信息的变量
song_name_var = tk.StringVar() # 创建歌曲名的StringVar
singer_var = tk.StringVar() # 创建歌手名的StringVar
# 创建标签显示当前歌曲名和歌手名
tk.Label(root, textvariable=song_name_var, font=('黑体', 15), bg='#6175d6').pack(pady=10)
tk.Label(root, textvariable=singer_var, font=('黑体', 15), bg='#6175d6').pack(pady=10)
root.mainloop() # 启动主事件循环
逻辑实现
读取音乐
完善方向是加上排序功能,music是音乐文件夹 os.listdir 打开指定文件夹获取文件夹下所有文件名称
def music_list():
"""返回'music'目录下所有.mp3文件的列表。"""
return [i for i in os.listdir('music') if i.endswith('.mp3')] # 获取所有.mp3文件
def name_now(num): # 获取当前播放音乐的名称和歌手
name1 = music_list()[num] # 获取当前音乐文件名
song_name = name1.split(' - ')[-1][:-4] # 提取歌曲名(去掉文件扩展名)
singer = name1.split(' - ')[0] # 提取歌手名
return name1, song_name, singer # 返回文件名、歌曲名和歌手名
def play():
"""播放选中的音乐。"""
mixer.init() # 初始化mixer
size = 0.5 # 设置初始音量
name, song_name, singer = name_now(num) # 获取当前播放音乐的信息
mixer.music.set_volume(size) # 设置音量
mixer.music.load(f'music/{name}') # 加载音乐文件
mixer.music.play() # 播放音乐
song_name_var.set(song_name) # 更新GUI中的歌曲名
singer_var.set(singer) # 更新GUI中的歌手名
按键功能
音乐暂停/取消暂停
def stop():
"""暂停音乐。"""
mixer.music.pause() # 暂停当前播放的音乐
def cancel():
"""继续播放音乐。"""
mixer.music.unpause() # 恢复播放被暂停的音乐
切换音乐上一首
def last():
"""播放上一首曲目。"""
global num # 声明num为全局变量
mixer.music.stop() # 停止当前播放的音乐
num = (num + 1) % len(music_list()) # 更新播放曲目的索引(循环播放)
play() # 播放新曲目
切换音乐下一首
def next_song():
"""播放下一首曲目。"""
global num # 声明num为全局变量
mixer.music.stop() # 停止当前播放的音乐
num = (num - 1) % len(music_list()) # 更新播放曲目的索引(循环播放)
play() # 播放新曲目
控制音乐音量增大
def soundsize_up():
"""增加音量。"""
global size # 声明size为全局变量
size = min(size + 0.1, 1) # 增加音量,确保不超过1
mixer.music.set_volume(size) # 更新音量
控制音乐音量降低
def soundsize_down():
"""减少音量。"""
global size # 声明size为全局变量
size = max(size - 0.1, 0) # 减少音量,确保不低于0
mixer.music.set_volume(size) # 更新音量
最后展示效果
总结
Tkinter是一个功能强大且简单易用的库,适合构建轻量级的GUI应用程序。
它在不同的操作系统上具有相同的外观和行为,因此可以实现跨平台的应用程序。
当然,Tkinter还有更多的功能和细节,通过阅读官方文档和教程,你可以更深入地了解和学习如何运用Tkinter来创建各种GUI应用程序。