关键词
Python | 声音 | 振荡器 | 绘图 | 波形 | 调制器 | 立体声 | 幅度 | 频率 | 加法合成 | 粒度合成 | 减法合成 | 滤波 | 取样 | 麦克风 | 混响 | 包络 | MIDI协议 | 傅里叶 | 噪声 | 合成器 | 算法 | 硬件 | Arduino | C++ | 多媒体 | Keras神经网络 | 播放器
该项目旨在使用 Python 中的 Tkinter 和 Pygame 创建音乐播放器应用程序。我们将使用 Tkinter 为应用程序创建 GUI,并使用 Pygame 来播放音乐。
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog
import pygame
import os
from tkinter import messagebox
在此步骤中,我们创建主类“MusicPlayer”并初始化 Tkinter 根窗口。 我们设置窗口的标题、尺寸和背景图像。 我们还使用标签将背景图像设置到窗口,并初始化 Pygame 及其混合器模块。
class MusicPlayer:
def __init__(self, root):
self.root = root
self.root.title("DataFlair - Music Player")
self.root.geometry("750x400")
self.root.resizable(False, False)
self.bg_image = tk.PhotoImage(file = os.path.join(os.getcwd(), "MusicPlayer/images", "bg_con.png"))
self.bg_label = ttk.Label(self.root, image=self.bg_image)
self.bg_label.place(relx=0, rely=-0, relwidth=1, relheight=1)
s = ttk.Style()
s.theme_use('clam')
s.configure('.', background='black', foreground='black')
s.configure('TFrame', background='white', foreground='white')
s.configure('TButton', font=('Arial', 12), background='black', foreground='white',
activebackground='brown', activeforeground='white')
s.configure('TLabel', font=('Arial', 12), background='black', foreground='white')
s.configure('TScale', background='white')
pygame.init()
pygame.mixer.init()
在此步骤中,我们创建播放列表框架,它将保存用户播放列表中的歌曲列表。 使用 grid() 方法将该框架放置在窗口的左侧。 播放列表由 Tkinter 列表框表示,它显示歌曲列表。 我们还将“<<ListboxSelect>>”事件绑定到“play_selected”函数,该函数播放所选歌曲。
self.playlist_frame = tk.Frame(self.root)
self.playlist_frame.grid(row=0, column=0, padx=10, pady=10)
self.playlist = tk.Listbox(self.playlist_frame, width=40, height=20)
self.playlist.pack(fill=tk.BOTH, expand=True)
self.playlist.bind("<<ListboxSelect>>", self.play_selected)
在此步骤中,我们创建放置在窗口右侧的控制框。 该框架包含播放/暂停按钮、向后跳按钮、向前跳按钮和音量控制。 播放/暂停按钮使用 Tkinter StringVar 在“播放”和“暂停”文本之间切换。 向后和向前跳过按钮分别使用“⏪”和“⏩”符号。
self.control_frame = ttk.Frame(self.root)
self.control_frame.grid(row=0, column=1, padx=10, pady=10)
self.control_frame.configure(border=1, relief="groove", borderwidth=2)
self.bg_image3 = tk.PhotoImage(file = os.path.join(os.getcwd(), "MusicPlayer/images", "control_bg.png"))
self.bg_label3 = ttk.Label(self.control_frame, image=self.bg_image3)
self.bg_label3.place(relx=0, rely=-0, relwidth=1, relheight=1)
self.play_var = tk.StringVar()
self.play_var.set("Play")
self.play_pause_button = ttk.Button(self.control_frame, textvariable=self.play_var, command=self.play_pause)
self.play_pause_button.grid(row=1, column=0, padx=10, pady=10)
self.skip_backward_button = ttk.Button(self.control_frame, text="⏪", command=self.skip_backward)
self.skip_backward_button.grid(row=2, column=0, padx=10, pady=10)
self.skip_forward_button = ttk.Button(self.control_frame, text="⏩", command=self.skip_forward)
self.skip_forward_button.grid(row=3, column=0, padx=10, pady=10)
在此步骤中,我们创建状态标签,它显示当前歌曲的状态和音量控制标签,它允许用户调整当前歌曲的音量。 音量控制由 Tkinter Scale 小部件表示,它采用 DoubleVar 变量并允许用户在 0 和 1 之间调整音量。