Music players have evolved rapidly over time. It started with gramophones, jukeboxes, CD players and MP3 players. Today you can listen to music on your mobile phone or on the computer itself. We’ll explore this very concept and develop a music player application using Python to turn off the groove.
Tkinter, PyGame, and OS modules
Building a music player requires Tkinter, PyGame, and OS modules. Tkinter is a Python standard GUI library that can be used to create desktop applications. Various widgets such as buttons, labels, and text boxes are provided to help you develop your app in no time. To install Tkinter, open a terminal and run:
pip install tkinter
PyGame allows you to develop amazing video games that run on any platform. It is easy to use and comes with graphics and sound libraries to speed up the development process. Use PyGame mixer.music A module that provides various functions to the music player. To install PyGame, run:
pip install pygame
Finally, we need an OS module to load the songs into the system. The OS module comes with Python’s standard library and does not need to be installed separately. This module allows access to system-specific functions to handle the operating system.
How to create a music player using Python
The source code for the Music Player application using Python can be found in this GitHub repository.
First, import the Tkinter, PyGame, and OS modules. define a class and music player. Define __Initialization__ A constructor that a program calls when an object is created.instance can be used self Access variables or methods within a class.
Initialize the root window and set the title and size of the music player. Initialize all imported PyGame modules along with the mixer module.set track and status to of string variable type. You can use this to set the text value and retrieve it as needed.
from tkinter import *
import pygame
import osclass MusicPlayer:
def __init__(self,root):
self.root = root
self.root.title("Music Player")
self.root.geometry("1000x200")
pygame.init()
pygame.mixer.init()
self.track = StringVar()
self.status = StringVar()
Define label frame It is included song track label and track status label. A Labelframe acts as a container and displays a label within a bounding area. Set the parent window in which to place the frame, the text to display, the font style, background color, font color, border width, and 3D effect outside the widget.
use place() How to organize your frames. Define two labels, song track and track statusCustomize and use them grid() Organize in rows and columns. You can set the song track to appear on the first line and add padding to avoid overlaps and make your design more beautiful.
trackframe = LabelFrame(self.root,text="Song Track",font=("arial",15,"bold"),bg="#8F00FF",fg="white",bd=5,relief=GROOVE)
trackframe.place(x=0,y=0,width=600,height=100)
songtrack = Label(trackframe,textvariable=self.track,width=20,font=("arial",24,"bold"),bg="#8F00FF",fg="#B0FC38").grid(row=0,column=0,padx=10,pady=5)
trackstatus = Label(trackframe,textvariable=self.status,font=("arial",24,"bold"),bg="#8F00FF",fg="#B0FC38").grid(row=0,column=1,padx=10,pady=5)
Similarly, define a frame containing four buttons. Customize and organize under the truck frame. Define 4 buttons, play, pause, Unpauseand stopSet the parent window to place the button, the text to display, the function to perform when clicked, width, height, font style, background color, and font color.
use grid() Use the manager to organize your buttons into one row and four different columns.
buttonframe = LabelFrame(self.root,text="Control Panel",font=("arial",15,"bold"),bg="#8F00FF",fg="white",bd=5,relief=GROOVE)
buttonframe.place(x=0,y=100,width=600,height=100)
playbtn = Button(buttonframe,text="PLAY",command=self.playsong,width=6,height=1,font=("arial",16,"bold"),fg="navyblue",bg="#B0FC38").grid(row=0,column=0,padx=10,pady=5)
playbtn = Button(buttonframe,text="PAUSE",command=self.pausesong,width=8,height=1,font=("arial",16,"bold"),fg="navyblue",bg="#B0FC38").grid(row=0,column=1,padx=10,pady=5)
playbtn = Button(buttonframe,text="UNPAUSE",command=self.unpausesong,width=10,height=1,font=("arial",16,"bold"),fg="navyblue",bg="#B0FC38").grid(row=0,column=2,padx=10,pady=5)
playbtn = Button(buttonframe,text="STOP",command=self.stopsong,width=6,height=1,font=("arial",16,"bold"),fg="navyblue",bg="#B0FC38").grid(row=0,column=3,padx=10,pady=5)
Define a LabelFrame and song frameThis includes songs you want to play on your music player. Customize the properties of the frame to place it to the right of the track and button frames. Add a vertical scroll bar so you can access songs even if the song list is long.
use list box A widget that displays songs. Set the background color and mode to display when text is selected. Single mode allows him to select one song at a time. Additionally, it initializes the font style, background color, font color, border width, and desired 3D style around it.
songsframe = LabelFrame(self.root,text="Song Playlist",font=("arial",15,"bold"),bg="#8F00FF",fg="white",bd=5,relief=GROOVE)
songsframe.place(x=600,y=0,width=400,height=200)
scroll_y = Scrollbar(songsframe,orient=VERTICAL)
self.playlist = Listbox(songsframe,yscrollcommand=scroll_y.set,selectbackground="#B0FC38",selectmode=SINGLE,font=("arial",12,"bold"),bg="#CF9FFF",fg="navyblue",bd=5,relief=GROOVE)
Packs the scrollbar to the right side of the window and fills as Y. This causes the scrollbar to grow in her Y direction as well, whenever the window grows. Configure the list box to use yview Methods for scrollbars that scroll vertically. Packs the list box to take up both horizontal and vertical space.
Changes the current working directory to the specified path. Repeat the songs and insert them one by one into the list box.you use end As the first argument because I want to add a new row to the end of the listbox.
scroll_y.pack(side=RIGHT,fill=Y)
scroll_y.config(command=self.playlist.yview)
self.playlist.pack(fill=BOTH)
os.chdir("Path_to_your_songs_folder")
songtracks = os.listdir()
for track in songtracks:
self.playlist.insert(END,track)
define a function, play song. Set the track to display the song name along with the status. -playing. use Load() and play() Use functions from PyGame’s mixer.music module to load and start music for playback.
def playsong(self):
self.track.set(self.playlist.get(ACTIVE))
self.status.set("-Playing")
pygame.mixer.music.load(self.playlist.get(ACTIVE))
pygame.mixer.music.play()
Similarly, define functions to stop, pause, and unpause a song using: stop(), pause()and unpause().
def stopsong(self):
self.status.set("-Stopped")
pygame.mixer.music.stop() def pausesong(self):
self.status.set("-Paused")
pygame.mixer.music.pause()
def unpausesong(self):
self.status.set("-Playing")
pygame.mixer.music.unpause()
Initialize a Tkinter instance and display the root window by passing it a class.of Main loop() The function tells Python to run the Tkinter event loop and listen to events until the window is closed.
root = Tk()
MusicPlayer(root)
root.mainloop()
Put all the code together and you should be able to play your music player in no time. You can further customize your music player by adding objects and shapes using PyGame’s drawing module.
Output of a music player application using Python
When you run the program, the music player will launch the songs you have selected as your playlist.About choosing one of the songs and making it a hit play button to start playing music. Likewise, clicking the appropriate buttons pauses, unpauses, and stops the music.
Building games with PyGame modules
PyGame is a powerful module that can be used to build games like Frets on Fire, Flappy Bird, Snake, Super Potato Bruh, Sudoku, and more. PyGame’s object-oriented design makes it easy to reuse code and customize game characters.
It supports and provides great graphics, sound, input, and output tools so you can focus on designing your game instead of spending time coding minute-by-minute features. Alternatively, you can explore Pyglet and Kivy, which are faster, support 3D projects, are more intuitive, and come with regular updates.