IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Python Tkinter aide


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Python Tkinter aide
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    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.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu crée deux fenêtres, une par héritage et une explicitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class App(Toplevel):           # 1
        ...
            self.root=Toplevel()     # 2
    Il ne faut pas en créer une nouvelle mais instancier la classe héritée.

    Ton canvas n'apparaît pas parce que tu n'appelles pas la méthode pack.

    Autre chose, si tu as une fonction mainloop() qui appelle mainloop() que peut-il se passer, à ton avis ?

    Essaye plutôt ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    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)
            self.mainloop()          
     
    jeu=App()

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci, je vois ou était mon problème par contre avec ta méthode j'avais toujours l'erreur "pyimage doesn't exist" je l'ai régler en remplaçant Tk par Toplevel mais je vois vraiment pas pourquoi ça refonctionne.
    au final ca me donne ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class App(Toplevel):            #cr?ation d'une classe qui peut contenir plusieurs m?thodes(fonction) et attributs(donn?es)
                                                     #creation de la fenetre toplevel par heritage
        def __init__(self):         #definition d'une m?thode contructeur init qui s'execute auto quand on creer un nouvel objet de la classe
                                         #self est un parametre qui designe toutes les instances creer pas cette classe
     
            Toplevel.__init__(self)                             #je sais pas trop a quoi ca sert
            self.can=Canvas(self,width=400,height=400,bg="black")            #cr?ation d'une zone d'image
            self.can.pack()          #ins?re le caneva dans la fen?tre
            self.microbe3=microbe(self.can,100,100)             #insere l'image dans le canevas
            self.mainloop()            #fais que la fen?tre ne se ferme pas
     
     
     
    jeu=App()
    Mais bon du coup ça refonctionne je vais pouvoir continuer.

Discussions similaires

  1. Class Python Tkinter
    Par Keyve dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/04/2012, 22h06
  2. Python Tkinter graphe
    Par Nifaste dans le forum Tkinter
    Réponses: 17
    Dernier message: 22/12/2009, 11h19
  3. La POO avec python Tkinter
    Par alberth dans le forum Tkinter
    Réponses: 2
    Dernier message: 06/05/2009, 14h53
  4. python, tkinter et les sockets (et les threads)
    Par bomberwaterman dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 02/01/2009, 19h53
  5. Conteneurs en Python Tkinter ?
    Par tuxout dans le forum Tkinter
    Réponses: 2
    Dernier message: 09/04/2007, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo