Unwanted window spawns when using Tkinter with multiprocessing.
Hi everyone, I'm trying to use multiprocessing to avoid Python's GIL but with Tkinter, instead of running my main function, it spawns new windows. In fact, my fuction is used everytime I press a specified key, but with multiprocessing I only get a new window when I hit a key. Does anyone have a solution ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
Sorry for my bad english. Here's my code : def key(event): instance = 'Instance' touche = event.char instance = multiprocessing.Process(target=player, args=(hitkey,)) instance.start() def player(hitkey): winsound.PlaySound(hitkey + '.wav', winsound.SND_FILENAME|winsound.SND_NOWAIT|winsound.SND_ASYNC) 'key' is the tkinter function wich gets the pressed key. 'player' is the function playing a specific wav file depending on wich key is pressed, that's why its argument is 'hitkey'. It uses the winsound module. What spawns new windows is theorically the multiprocessing line of code, even if it's inside the 'key' function. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
Well I saw this clause on most of the multiprocessing examples I saw but the reason it was here wasn't explained so I just ignored it (yeah stupid I know). I don't think I bypassed anything, at least not on purpose. I'm running on Windows 7 64 bits. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
My full code is : #Import from tkinter import * import wave import winsound import multiprocessing #Initialisation fenetre=Tk() frame = Frame(fenetre, width=200, height=100) instance = 'Instance' #Fonctions def key(event): instance = 'Instance' hitkey = event.char instance = multiprocessing.Process(target=player, args=(hitkey,)) instance.start() def player(hitkey): winsound.PlaySound(hitkey + '.wav', winsound.SND_FILENAME|winsound.SND_NOWAIT|winsound.SND_ASYNC) #TK frame.focus_set() frame.bind("", key) frame.pack() fenetre.mainloop() The problem is that I don't know where to put that clause. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
It definetly helped, windows don't pop up anymore, but now it doesn't make any sound anymore. Could it be because of a local (non-global) variable ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
Yeah I did, but I globalized my variables, I've got only functions, and not methods, and my clause seems to work so I don't know why it doesn't work. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
I thought 'clause' was reffering to the 'if __name__ == "__main__":' thing in English, but apparently not. Well except the import and the 'globalization' of my variables, every thing is idented. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
> Dave A. Yeah I'm using MRAB's code, my current code is : #Initalisation global event global hitkey #Functions def key(event): hitkey = event.char instance = multiprocessing.Process(target=player, args=(hitkey,)) instance.start() def player(hitkey): winsound.PlaySound(hitkey + '.wav', winsound.SND_FILENAME|winsound.SND_NOWAIT|winsound.SND_ASYNC) if __name__ == "__main__": fenetre = Tk() frame = Frame(fenetre, width=200, height=100) frame.focus_set() frame.bind("", key) frame.pack() fenetre.mainloop() -- http://mail.python.org/mailman/listinfo/python-list
Re: Unwanted window spawns when using Tkinter with multiprocessing.
> Dave A. No, not a new window, but my player function doesn't play any sound anymore. -- http://mail.python.org/mailman/listinfo/python-list