Music Player - Python
Music Player - Python
import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import pygame
import os
import random
class MusicPlayer:
def __init__(self, root):
self.root = root
self.root.title("Music Player")
self.root.geometry("600x400")
self.playlist = []
self.current_index = 0
self.is_paused = False
self.is_shuffled = False
self.is_repeating = False
self.create_widgets()
def create_widgets(self):
self.playlist_box = tk.Listbox(self.root, selectmode=tk.SINGLE, width=60, height=15)
self.playlist_box.pack(pady=20)
controls_frame = tk.Frame(self.root)
controls_frame.pack()
menu_bar = tk.Menu(self.root)
self.root.config(menu=menu_bar)
def add_songs(self):
songs = filedialog.askopenfilenames(title="Choose Songs", filetypes=(("MP3 Files",
"*.mp3"), ("All Files", "*.*")))
for song in songs:
song_name = os.path.basename(song)
self.playlist_box.insert(tk.END, song_name)
self.playlist.append(song)
def play_music(self):
if not self.playlist:
messagebox.showwarning("No Songs", "Please add songs to the playlist.")
return
if self.is_paused:
pygame.mixer.music.unpause()
self.is_paused = False
else:
pygame.mixer.music.load(self.playlist[self.current_index])
pygame.mixer.music.play()
def pause_music(self):
pygame.mixer.music.pause()
self.is_paused = True
def stop_music(self):
pygame.mixer.music.stop()
def next_music(self):
self.stop_music()
if self.is_shuffled:
self.current_index = random.randint(0, len(self.playlist) - 1)
else:
self.current_index = (self.current_index + 1) % len(self.playlist)
self.play_music()
def prev_music(self):
self.stop_music()
self.current_index = (self.current_index - 1) % len(self.playlist)
self.play_music()
def toggle_shuffle(self):
self.is_shuffled = not self.is_shuffled
status = "On" if self.is_shuffled else "Off"
messagebox.showinfo("Shuffle", f"Shuffle is now {status}")
def toggle_repeat(self):
self.is_repeating = not self.is_repeating
pygame.mixer.music.set_endevent(pygame.USEREVENT)
status = "On" if self.is_repeating else "Off"
messagebox.showinfo("Repeat", f"Repeat is now {status}")
def mainloop(self):
self.root.mainloop()
if __name__ == "__main__":
root = tk.Tk()
app = MusicPlayer(root)
check_repeat()
app.mainloop()