110 lines
3.1 KiB
Python
110 lines
3.1 KiB
Python
from tkinter import *
|
|
from tkinter import filedialog
|
|
import pygame
|
|
import os
|
|
|
|
root = Tk()
|
|
root.title("RASPMP3")
|
|
root.geometry("600x400")
|
|
#programIcon = pygame.image.load('icon.png')
|
|
#pygame.display.set_icon(programIcon)
|
|
|
|
|
|
pygame.mixer.init()
|
|
|
|
menubar = Menu(root)
|
|
root.config(menu=menubar)
|
|
|
|
songs = []
|
|
current_song = ""
|
|
paused = False
|
|
|
|
def load_music():
|
|
global current_song
|
|
root.directory = filedialog.askdirectory()
|
|
|
|
for song in os.listdir(root.directory):
|
|
name, ext = os.path.splitext(song)
|
|
if ext == ".mp3":
|
|
songs.append(song)
|
|
|
|
for song in songs:
|
|
songList.insert(END, song)
|
|
|
|
songList.selection_set(0)
|
|
current_song = songs[songList.curselection()[0]]
|
|
|
|
def play_music():
|
|
global current_song, paused
|
|
|
|
if not paused:
|
|
pygame.mixer.music.load(os.path.join(root.directory, current_song))
|
|
pygame.mixer.music.play()
|
|
else:
|
|
pygame.mixer.music.unpause()
|
|
paused = False
|
|
|
|
def pause_music():
|
|
global paused
|
|
pygame.mixer.music.pause()
|
|
paused = True
|
|
|
|
def next_music():
|
|
global current_song, paused
|
|
try:
|
|
songList.selection_clear(0, END)
|
|
next_index = songs.index(current_song) + 1
|
|
if next_index < len(songs):
|
|
songList.selection_set(next_index)
|
|
current_song = songs[songList.curselection()[0]]
|
|
play_music()
|
|
else:
|
|
# Handle the case when the current song is the last in the list
|
|
songList.selection_set(0)
|
|
current_song = songs[0]
|
|
play_music()
|
|
except IndexError:
|
|
pass
|
|
|
|
def previous_music():
|
|
global current_song, paused
|
|
try:
|
|
songList.selection_clear(0, END)
|
|
prev_index = songs.index(current_song) - 1
|
|
if prev_index >= 0:
|
|
songList.selection_set(prev_index)
|
|
current_song = songs[songList.curselection()[0]]
|
|
play_music()
|
|
else:
|
|
# Handle the case when the current song is the first in the list
|
|
songList.selection_set(len(songs) - 1)
|
|
current_song = songs[-1]
|
|
play_music()
|
|
except IndexError:
|
|
pass
|
|
|
|
organize_menu = Menu(menubar, tearoff=False)
|
|
organize_menu.add_command(label="Open Folder", command=load_music)
|
|
menubar.add_cascade(label="Songs", menu=organize_menu)
|
|
|
|
songList = Listbox(root, bg="black", fg="white", width=100, height=15)
|
|
songList.pack()
|
|
|
|
control_frame = Frame(root)
|
|
control_frame.pack()
|
|
play_btn_img = PhotoImage(file="play.png")
|
|
pause_btn_img = PhotoImage(file="pause.png")
|
|
next_btn_img = PhotoImage(file="next.png")
|
|
previous_btn_img = PhotoImage(file="previous.png")
|
|
|
|
play_btn = Button(control_frame, image=play_btn_img, borderwidth=0, command=play_music)
|
|
pause_btn = Button(control_frame, image=pause_btn_img, borderwidth=0, command=pause_music)
|
|
next_btn = Button(control_frame, image=next_btn_img, borderwidth=0, command=next_music)
|
|
previous_btn = Button(control_frame, image=previous_btn_img, borderwidth=0, command=previous_music)
|
|
|
|
play_btn.grid(row=0, column=1, padx=7, pady=10)
|
|
pause_btn.grid(row=0, column=2, padx=7, pady=10)
|
|
next_btn.grid(row=0, column=3, padx=7, pady=10)
|
|
previous_btn.grid(row=0, column=0, padx=7, pady=10)
|
|
|
|
root.mainloop()
|