pyrender
pyrender copied to clipboard
raise RuntimeError('EventLoop.run() must be called from the same ' + RuntimeError: EventLoop.run() must be called from the same thread that imports pyglet.app
This is my completed code below:
import gi gi.require_version('Gtk','3.0') from gi.repository import Gtk,GLib
import threading import pyglet import mutagen.mp3 as tag
class AudioPlayer: def init(self): #Initializing Builder Objects self.builder= Gtk.Builder() self.builder.add_from_file("EOMusic.glade") self.builder.connect_signals(self)
#Initilizing the File Music Selector File Box:
self.file_dialog= self.builder.get_object("file_dialog")
self.fileName=""
#Initilizing Widgets
self.title = self.builder.get_object("title_label")
self.album= self.builder.get_object("album_label")
self.artist= self.builder.get_object("artist_label")
self.elapsed_time= self.builder.get_object("elapsedTime_label")
self.totalTime= self.builder.get_object("totalTime_label")
self.progressbar=self.builder.get_object("progressbar_label")
#Initiliaze the Player:
self.state= "STOP"
#Initializing Main Window
self.win=self.builder.get_object("mainWin")
self.win.connect('destroy', self.app_exist)
self.win.show_all()
def on_open(self,button):
self.file_dialog.run()
self.file_dialog.hide()
def on_play(self,button):
self.t=threading.Thread(target=self.play_music )
self.t.start()
def play_music(self):
if self.state!="PLAY":
self.state= "PLAY"
self.player = pyglet.media.Player()
musicFile=pyglet.media.load(self.fileName)
self.player.queue(musicFile)
self.player.play()
self.elapsedTime=GLib.timeout_add_seconds(1,self.elapsedTimings)
pyglet.app.run() # To play the music in smooth way, Run the process in backrground
pyglet.clock.tick() #This is used as an internal clock for this application
def elapsedTimings(self):
self.elapsed= round(self.player.time, 0)
percentage= self.elapsed/self.totallengthtime
self.elapsed_time.set_text(str(self.elapsed))
self.progressbar.set_fraction(percentage)
self.elapsedTime=GLib.timeout_add_seconds(1,self.elapsedTimings)
def on_openfile(self,button):
self.fileName=self.file_dialog.get_filename()
self.trackInfo=tag.MP3(self.fileName)
self.title.set_text(self.trackInfo['TIT2'].text[0])
self.album.set_text(self.trackInfo['TALB'].text[0])
self.artist.set_text(self.trackInfo['TPE1'].text[0])
self.totallengthtime= round(self.trackInfo.info.length,2)
self.totalTime.set_text(str(self.totallengthtime))
#TALB - Album
#TPE1 : Artist
#TIT2 : Music Title
#print(self.trackInfo)
self.file_dialog.hide()
def on_closefile(self,button):
self.file_dialog.hide()
def on_stop(self,button):
if self.state!="STOP":
self.state="STOP"
self.player.pause()
GLib.source_remove(self.elapsedTime)
def app_exist(self,widget):
pyglet.app.exit() # Once i click the close from window audio player the application need to close
Gtk.main_quit()
app = AudioPlayer() Gtk.main()