EventLoop.run() must be called from the same thread that imports pyglet.app, Am using window 10 , Below is my code, Am using Pyglet and mutagen
platform_event_loop.start() File "C:/msys64/mingw64/lib/python3.8/site-packages/pyglet/app/win32.py", line 89, in start raise RuntimeError('EventLoop.run() must be called from the same ' + RuntimeError: EventLoop.run() must be called from the same thread that imports pyglet.app
Below is my code; I need your help, Am a bit new on this pyglet so explain me in easy way !
import gi gi.require_version('Gtk','3.0') from gi.repository import Gtk,GLib
import time 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.elapsedTime= 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.player = pyglet.media.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"
musicFile=pyglet.media.load(self.fileName)
self.player.queue(musicFile)
self.player.play()
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 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])
#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()
self.player.seek(0.0)
time.sleep(1)
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()