pyrender icon indicating copy to clipboard operation
pyrender copied to clipboard

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

Open eliaotito opened this issue 5 years ago • 0 comments

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()

eliaotito avatar Jul 30 '20 13:07 eliaotito