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

Python Discussion :

Erreur de sémantique avec Tkinter?


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Erreur de sémantique avec Tkinter?
    Bonjour à tous,

    J'ai eu un petit problème récemment avec le module Tkinter et, si vous pouviez m'aider, je ne dirais pas non . Cette application est une simple manipulation de canevas, rectangles et textes et sert à afficher la solution d'un jeu logique proche du sudoku. Dès que je lance cette application, elle crée une fenêtre grise et ne fait rien, alors que je veux une sorte de grille. Voici le code pour cette classe:

    (A noter que ce n'est pas un problème de variables, elles sont toutes déjà créées avant de lancer cette application)

    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
     
    class Fen_Solution():
        def __init__(self):
            self.solution = Tk()
            self.solution.title("Solution")
            self.can = Canvas(self.solution, width = "408",height = "408", bg = "white")
            for i in range(n):
                for j in range(n):
                    a = 408 / n * i
                    b = 408 / n * j
                    c = 408 / n * (i+1)
                    d = 408 / n * (j+1)
                    e = (a + b) / 2
                    f = (c + d) / 2
                    g = case[(i,j)].valeur
                    g = int(g)
                    if case[(i,j)].painted == False:
                        self.can.create_rectangle(a,b,c,d,fill = "white")
                    else:
                        self.can.create_rectangle(a,b,c,d,fill = "black")
                    self.can.create_text(e,f, text = str(g), justify = "center")
            self.solution.mainloop()
    Merci d'avance,

    Silent-Fart.ch

  2. #2
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Bien que je ne sache pas ce qu'est case[(i,j)], voici quelques modifications (et ajouts à ton code) :

    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
    from Tkinter import *
     
    class FenSolution():
        def __init__(self):
            self.solution = Tk()
            self.solution.title("Solution")
            self.can = Canvas(self.solution, width = "408",height = "408", bg = "white")
            self.can.pack()
            n = 6
            for i in range(n):
                for j in range(n):
                    a = 408 / n * i
                    b = 408 / n * j
                    c = 408 / n * (i+1)
                    d = 408 / n * (j+1)
                    e = (a + b) / 2
                    f = (c + d) / 2
                    if (i+j)%2 == 1:
                        valeur = 0;
                    else:
                        valeur = 1
                    #g = int(g)
                    g = 0
                    if valeur == 0:
                        self.can.create_rectangle(a,b,c,d,fill = "white")
                    else:
                        self.can.create_rectangle(a,b,c,d,fill = "black")
                    self.can.create_text(e,f, text = str(g), justify = "center")
            self.solution.mainloop()
     
    if __name__ == "__main__":
        fen = FenSolution()

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci Beaucoup calogerogigante! J'avais pas pensé à mettre "self.can.pack()" et c'est pour ça que ça marchait pas...

  4. #4
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    De rien !

    Si tu débutes avec Pack(), voici un petit didacticiel que j'ai écrit, qui permet (je l'espère) de voir clair rapidement sur son fonctionnement :

    http://www.gigante.be/python/didact_002.php

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

Discussions similaires

  1. Erreur de syntaxe avec IDLE et Tkinter
    Par Mic92 dans le forum Tkinter
    Réponses: 4
    Dernier message: 29/05/2010, 08h35
  2. Erreur ORA-12514 avec database link
    Par gafreu dans le forum Administration
    Réponses: 20
    Dernier message: 09/09/2004, 11h53
  3. Erreur sur IIS avec des cripts ASP
    Par Alin dans le forum ASP
    Réponses: 7
    Dernier message: 22/06/2004, 14h15
  4. erreur tcp/ip avec jdbc
    Par champion dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 03/04/2004, 14h32
  5. Erreur de sgmentation avec malloc
    Par simonm dans le forum C
    Réponses: 5
    Dernier message: 27/02/2003, 08h29

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