Besoine d'aide tkinter
buritos69
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a tous,
Je dois réaliser un jeux pour une épreuve du bac mais étant débutant en programmation python je me suis retrouve bloqué face a un problème.
Pour le moment j'essayais juste a l'aide de Tkinter de créer une fenêtre avec à l'intérieur un canevas et afficher un image dedans. J'ai d'abord eu le message d'erreur "pyimage doesn't exist" que j'ai résolu en remplacant root=Tk() par root=Toplevel(), et ça marchait jusqu'à ce que j'essaye de tous rentrer dans des class ce qui a donné ceci :
C'est ici que je ne comprend plus; quand j'exécute le programme il m'ouvre deux fenêtre tkinter vide sans canevas ni image et je ne comprend pas du tout pourquoi. Est ce qu'une personne peut m'informer de mes erreurs flagrante ou m'aiguiller pour pouvoir me debloquer ?
Merci.
Je dois réaliser un jeux pour une épreuve du bac mais étant débutant en programmation python je me suis retrouve bloqué face a un problème.
Pour le moment j'essayais juste a l'aide de Tkinter de créer une fenêtre avec à l'intérieur un canevas et afficher un image dedans. J'ai d'abord eu le message d'erreur "pyimage doesn't exist" que j'ai résolu en remplacant root=Tk() par root=Toplevel(), et ça marchait jusqu'à ce que j'essaye de tous rentrer dans des class ce qui a donné ceci :
from Tkinter import * from PIL import Image,ImageTk class microbe(): def __init__(self,can,posx,posy): self.can=can self.posx=posx self.posy=posy self.microbe=Image.open("microbe.png") self.microbe=self.microbe.resize((30,30),Image.ANTIALIAS) self.microbe2=ImageTk.PhotoImage(self.microbe) self.can.create_image(self.posy,self.posy,image=self.microbe2) class App(Toplevel): def __init__(self): self.root=Toplevel() self.can=Canvas(self.root,width=400,height=400,bg="black") self.can.pack self.microbe3=microbe(self.can,100,100) def mainloop(self): self.root.mainloop() jeu=App() jeu.mainloop()
C'est ici que je ne comprend plus; quand j'exécute le programme il m'ouvre deux fenêtre tkinter vide sans canevas ni image et je ne comprend pas du tout pourquoi. Est ce qu'une personne peut m'informer de mes erreurs flagrante ou m'aiguiller pour pouvoir me debloquer ?
Merci.
1 réponse
'lut, c'est normal que tu aies 2 fenêtres: ta class
Et il ne vaut mieux pas se servir directement d'un Toplevel, mais d'un
Ta fonction
Remplace ta classe comme ceci:
Appest un
Toplevel, et tu en recrées un autre lors de l'initialisation...
Et il ne vaut mieux pas se servir directement d'un Toplevel, mais d'un
Tk(et éventuellement d'une
Framededans).
Ta fonction
mainloops'appelle elle-même, donc on a une récursion d'appel donnant lieu à une
RuntimeError: maximum recursion depth exceeded.
Remplace ta classe comme ceci:
class App(Tk): def __init__(self): Tk.__init__(self) self.can=Canvas(self,width=400,height=400,bg="black") self.can.pack() self.microbe3=microbe(self.can,100,100) def mainloop(self): Tk.mainloop(self)