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 :

[Tkinter] Problème changement contenu Canevas ISN


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut [Tkinter] Problème changement contenu Canevas ISN
    Bonjour,

    Je post ici car je travaille en ce moment sur un projet dans le cadre de la spécialité ISN (informatique) de terminale S.

    Je dois donc rendre un projet pour le BAC pour cela j'ai choisi de créer un jeu de NIM en interface graphique avec tkinter.

    Mon algorithmique est déjà faite en console (intelligence artificielle ect..)

    Mais je rencontre un problème au stade où j'en suis.

    En effet, je souhaite créer plusieurs menus. Visuellement c'est fait. Par contre quand je clique sur le bouton du menu l'action que j'ai programmé ne se déroule pas comme prévu.C'est à dire que la nouvelle image que je demande à afficher ne s'affiche pas ... C'est assez dur d'expliquer alors je vais mettre des screens et le bout de code qui je pense pose problème.

    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
    31
    32
    33
    34
    35
    36
    37
    Mafenetre = Tk()
    Mafenetre.title("Jeu de NIM")
     
    menubar = Menu(Mafenetre)
     
    """Menu 1 joueur"""
     
    menu1joueur = Menu(menubar,tearoff=0)
    menu1joueur.add_command(label="Facile",command=mode1joueurfacile)
    menu1joueur.add_command(label="Normal",command=mode1joueurnormal)
    menu1joueur.add_command(label="Difficile",command=mode1joueurdifficle)
    menubar.add_cascade(label="1 joueur", menu=menu1joueur)
     
    """Menu 2 joueurs"""
     
    menu2joueurs = Menu(menubar,tearoff=0)
    menu2joueurs.add_command(label="Jouer",command=mode2joueurs)
    menubar.add_cascade(label="2 joueurs", menu=menu2joueurs)
     
    """Menu aide"""
     
    menuaide = Menu(menubar,tearoff=0)
    menuaide.add_command(label="Régles",command=Regles)
    menuaide.add_command(label="A propos",command=Apropos)
    menubar.add_cascade(label="Aide", menu=menuaide)
     
    """on configure le menu"""
     
    Mafenetre.config(menu=menubar)
     
    Canevas = Canvas(Mafenetre)
    photo = PhotoImage(file="NIM.gif")
    Canevas.create_image(0,0,anchor=NW, image=photo)
    Canevas.config(height=photo.height(),width=photo.width())
    Canevas.pack(side = TOP , padx=0,pady=0)
     
    Mafenetre.mainloop()
    Et la fonction mode1joueurnormal qui me sert de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def mode1joueurnormal():
        Canevas.delete(ALL)
        photo2 = PhotoImage(file="textureredim.gif")
        Canevas.create_image(0,0,anchor=NW, image=photo2)
        Canevas.config(height=photo2.height(),width=photo2.width())
        Canevas.pack(side = TOP , padx=0,pady=0)
        boutons()
    Nom : Screen32.png
Affichages : 206
Taille : 425,1 Ko

    Voilà mon programme

    Nom : Screen22.png
Affichages : 176
Taille : 539,0 Ko

    Je clique sur le mode 1 joueur (la fonction qui me sert à tester pour l'instant)

    Nom : Screen16.png
Affichages : 171
Taille : 150,2 Ko

    Et voilà le résultat ... L'image ne s'affiche pas pourtant la fenêtre se redimensionne bien .. Si quelqu'un à une idée merci de m'en faire part. Je post un .rar avec mon code complet et les images.

    Cordialement

    Zl4T

    Lien du .rar :*http://www.mediafire.com/download/1b...PB_TKINTER.rar

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zl4T_59 Voir le message
    Bonjour,

    Je post ici car je travaille en ce moment sur un projet dans le cadre de la spécialité ISN (informatique) de terminale S.

    Je dois donc rendre un projet pour le BAC pour cela j'ai choisi de créer un jeu de NIM en interface graphique avec tkinter.

    (snip)(snip)

    Et voilà le résultat ... L'image ne s'affiche pas pourtant la fenêtre se redimensionne bien .. Si quelqu'un à une idée merci de m'en faire part. Je post un .rar avec mon code complet et les images.

    Cordialement

    Zl4T

    Lien du .rar :*http://www.mediafire.com/download/1b...PB_TKINTER.rar
    Bonjour,

    Essayez de mettre tout simplement une déclaration "global photo2" en début de fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def mode1joueurnormal():
        global photo2
        Canevas.delete(ALL)
        photo2 = PhotoImage(file="textureredim.gif")
        Canevas.create_image(0,0,anchor=NW, image=photo2)
        Canevas.config(height=photo2.height(),width=photo2.width())
        Canevas.pack(side = TOP , padx=0,pady=0)
        boutons()
    Ça devrait fonctionner OK.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Salut,

    Essayez avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def mode1joueurnormal():
        Canevas.delete(ALL)
        Canevas.photo2 = photo2 = PhotoImage(file="textureredim.gif")
        Canevas.create_image(0,0,anchor=NW, image=photo2)
        Canevas.config(height=photo2.height(),width=photo2.width())
        Canevas.pack(side = TOP , padx=0,pady=0)
        boutons()
    La durée de vie de photo2 est limité à celle de la fonction mode1joueurnormal.
    A la sortie, l'objet est détruit et l'image ne sera plus affichée.
    Canevas.photo2 = photo2 =... associe la photo à Canevas.
    Cet objet là n'est pas détruit à la sortie.

    Peut-être serait-il préférable (dans un premier temps) de créer vos PhotoImage après l'appel a Tk() et y accéder via des variables globales. genre photo_textureredim = PhotoImage(file="textureredim.gif").
    La fonction s'écrirait alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def mode1joueurnormal():
        Canevas.delete(ALL)
        photo = photo_textureredim
        Canevas.create_image(0,0,anchor=NW, image=photo)
        Canevas.config(height=photo.height(),width=photo.width())
        Canevas.pack(side = TOP , padx=0,pady=0)
        boutons()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut Whao
    Je suis impressionné par la rapidité de vos réponses, j'avais déjà posté sur un autre forum dont je ne citerai pas le nom depuis hier je n'ai eu aucunes réponses.

    Je vous remercie donc pour ces réponses rapides et je m'empresse de tester ceci, c'est vrai que je n'avais jamais pensé que dans une fonction la variable avait une certaine durée de vie .. Merci ! Je test et je vous fais savoir si cela fonctionne !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut Solved !
    Ca fonctionne ! Merci beaucoup ! Je m'en veux de ne pas y avoir pensé avant !

    Nom : solved.png
Affichages : 182
Taille : 607,6 Ko

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/06/2007, 15h51
  2. [Tkinter] recuperer le contenu d'un canvas sous format image
    Par xavier-Pierre dans le forum Tkinter
    Réponses: 2
    Dernier message: 03/04/2006, 20h07
  3. [VBA-E]problème changement d'etat d'une cellule
    Par 12_darte_12 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/03/2006, 18h19
  4. Problème changement serveur pour un site PHP
    Par izzy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/01/2006, 11h34
  5. [NON RESOLU] Problème changement maitre détail - Requête SQL
    Par Leesox dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2005, 09h49

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