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 :

Fonction Tkinter Mathdoku


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Par défaut Fonction Tkinter Mathdoku
    Bonjour, c'est mon 1er message dans le forum, je suis débutant sur Python en plus donc allez-y un peu doucement avec moi SVP .

    Bref, j'ai un petit programme à coder, j'ai un peu fouiller dans les cours et les discussions du forum, mais finalement je me tourne vers vous pour m'aider.

    En fait, j'ai commencé à coder l'interface, l'idée c'est un programme qui résoud une grille de Mathdoku entrée par l'utilisateur ( Un Mathdoku c'est comme n Sudoku, beaucoup plus compliqué ! ) .. En effet, j'arrive à créer la fenetre en tkinter où l'utilisateur peut choisir la dimension de la grille qu'il veut résoudre .. Ceci étant fait, je trouve des difficultés pour coder la fonction liée au bouton "Valider" qui permet de passer à l'étape suivante dans le programme, après que l'utilisateur ait indiqué la taille de sa grille bien entendu .. Pour ce faire, je compte coder 6 petites fonctions ( La grille est de taille 4 à 9 maximum), une fonction pour chaque choix..

    A l'issue de la validation de la dimension, je devrais créer entre autres une fenetre où il y a n checkbutton verticalement et n autres horizontalement ( n étant la taille choisie ..) Pour ce qui reste, je préfère laisser après déjà finir cette étape pour commencer.

    PS : Je suis sur Python 2.7, ce que j'ai pu coder pour l'instant est joint dans le code.

    Merci d'avance de votre aide précieuse !


    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #1.Interface
     
    import Tkinter 
     
     
    class simpleapp_tk(Tkinter.Tk):   #simpleaapp_tk peut etre utilisé dans d'autres programmes Python, j'espère ..
        def __init__(self,parent):
            Tkinter.Tk.__init__(self,parent)
            self.parent = parent
            self.initialize()
     
        def initialize(self): # Partie du code où seront définit les widgets .. etc
            self.grid()
     
            self.entry = Tkinter.Entry(self) # On ajoute des zones de texte
            self.entry.grid(column=0,row=1,sticky='NSEW')
            # E=east (gauche), W=West (droite), N=North (haut), S=South (bas)
     
            zone_texte=Tkinter.Label(self,text="Veuillez entrer la dimension de votre grille Ken-Ken (4-9) :")
            zone_texte.grid(column=0,row=0)       
     
            #Boutons de commande
            button = Tkinter.Button(self,text="Valider")#command=self.Valider)
            button.grid(column=0,row=2)
            quitter=Tkinter.Button(self,text="Quitter",fg='Red',command=self.quit)
            quitter.grid(column=0,row=3)
     
            self.grid_columnconfigure(0,weight=1)
            # changer la taille de ses colonnes et lignes quand la fenêtre est redimensionée
            self.resizable(False,True) 
            #True pour pouvoir changer la dimension de la fenetre horizontalement,
            #False pour interdire le redimmensionnement de la fenetre verticalement
     
            def choix_4x4():
            def choix_5x5():
            def choix_6x6():
            def choix_7x7():
            def choix_8x8():
            def choix_9x9():
     
     
    if __name__ == "__main__":
        app = simpleapp_tk(None)
        app.title(' MathDoku') # Ce qui sera executé 
        app.geometry("400x100")
        app.mainloop() #Boucler le programme

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Salut,

    Pourquoi ne pas essayer de créer une grille NxM avant de faire plus compliqué?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> import tkinter as tk
    >>>
    >>> def create_grid(master, rows, columns):
    ...     frame = tk.Frame(master)
    ...     for i in range(rows):
    ...         for j in range(columns):
    ...             w = tk.Label(frame, text="%d-%d" % (i,j))
    ...             w.grid(row=i, column=j)
    ...     return frame
    ...
    >>> app = tk.Tk()
    >>> grid = create_grid(app, 2,4)
    >>> grid.pack()
    Vous pourrez ensuite remplacer les Label par des objets plus élaborés.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Par défaut
    Vous voulez dire créer une grille NxM, puis omettre les cases en fonction de ce que l'utilisateur demande de résoudre c'est ça ?

    Edit: Je ne peux exécuter votre code car je travaille sur Python 2.7 , merci d'adapter les fonctions si possible.

    Merci !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Citation Envoyé par Marrakchino Voir le message
    Vous voulez dire créer une grille NxM, puis omettre les cases en fonction de ce que l'utilisateur demande de résoudre c'est ça ?
    En fait, je ne comprends pas comment on peut commencer à écrire une interface pour des fonctions qui n'existent pas encore.
    Je vous proposais donc de créer une grille assez simple pour commencer.

    Edit: Je ne peux exécuter votre code car je travaille sur Python 2.7 , merci d'adapter les fonctions si possible.
    Il vous suffit de remplacer la première ligne par "import Tkinter as tk"


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marrakchino Voir le message
    Bonjour, c'est mon 1er message dans le forum, je suis débutant sur Python en plus donc allez-y un peu doucement avec moi SVP .

    Bref, j'ai un petit programme à coder, j'ai un peu fouiller dans les cours et les discussions du forum, mais finalement je me tourne vers vous pour m'aider.

    En fait, j'ai commencé à coder l'interface, l'idée c'est un programme qui résoud une grille de Mathdoku entrée par l'utilisateur ( Un Mathdoku c'est comme n Sudoku, beaucoup plus compliqué ! ) .. En effet, j'arrive à créer la fenetre en tkinter où l'utilisateur peut choisir la dimension de la grille qu'il veut résoudre .. Ceci étant fait, je trouve des difficultés pour coder la fonction liée au bouton "Valider" qui permet de passer à l'étape suivante dans le programme, après que l'utilisateur ait indiqué la taille de sa grille bien entendu .. Pour ce faire, je compte coder 6 petites fonctions ( La grille est de taille 4 à 9 maximum), une fonction pour chaque choix..

    A l'issue de la validation de la dimension, je devrais créer entre autres une fenetre où il y a n checkbutton verticalement et n autres horizontalement ( n étant la taille choisie ..) Pour ce qui reste, je préfère laisser après déjà finir cette étape pour commencer.

    PS : Je suis sur Python 2.7, ce que j'ai pu coder pour l'instant est joint dans le code.

    Merci d'avance de votre aide précieuse !
    Bonjour,

    Voici quelques éléments susceptibles de vous aider :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
     
    import Tkinter as TK
     
    import tkSimpleDialog as DLG
     
     
    class Application (TK.Tk):
     
        def __init__ (self):
     
            # super class inits
     
            TK.Tk.__init__(self)
     
            self.init_widgets()
     
        # end def
     
     
        def init_widgets (self):
     
            self.canvas = TK.Canvas(
     
                self, bg="white", width=400, height=400,
            )
     
            self.canvas.pack(padx=5, pady=5)
     
            TK.Button(
     
                self, text="Quitter", command=self.quit,
     
            ).pack(side=TK.RIGHT, padx=5, pady=5)
     
        # end def
     
     
        def run (self):
     
            self.nb_cases = DLG.askinteger(
     
                "Taille de la grille",
     
                "Veuillez entrer la dimension de votre grille Ken-Ken (4-9) :",
     
                parent=self,
            )
     
            if not self.nb_cases in range(4, 10):
     
                # suivi console
     
                print "la valeur par défaut a été choisie"
     
                # init valeur par défaut
     
                self.nb_cases = 9
     
            # end if
     
            self.dessiner_grille()
     
            # on entre dans la boucle principale
     
            self.mainloop()
     
        # end def
     
     
        def dessiner_grille (self):
     
            # suivi console
     
            print "grille de {0} x {0} cases".format(self.nb_cases)
     
            # mettez ici le code qui dessine la grille
            # en fonction de self.nb_cases
            # et en utilisant self.canvas
     
            # d'abord on efface complètement le canevas
     
            self.canvas.delete(TK.ALL)
     
            # à vous de jouer --------------------------- TODO
     
        # end def
     
    # end class Application
     
     
    if __name__ == "__main__":
     
        Application().run()
     
    # end if
    Documentation tkinter :

    http://infohost.nmt.edu/tcc/help/pub...web/index.html

    Documentation tkSimpleDialog.askinteger() :

    http://nullege.com/codes/search/tkin...log.askinteger

    PS : quitte à débuter avec Python, autant démarrer de suite avec Python3, cela vous évitera bien des déboires inutiles avec Unicode et la lecture/écriture de fichiers.

    Si vous pouvez installer Python3 sur votre machine, c'est peut-être le moment de le faire.

    Doc Python3 :

    https://docs.python.org/3/

    Téléchargements (version actuelle v3.4) :

    https://www.python.org/downloads/

    Bon courage.

    @+.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Par défaut
    @wiztricks

    C'est peut etre une bonne idée de la faire et je vous en remercie énormément, mais ça reste un peu à coté de ce que j'espère faire avec mon programme .

    + Je ne vois pas les fonctions dont vous parlez ..

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Par défaut
    Citation Envoyé par tarball69 Voir le message

    @+.


    Merci bien ! Je verrais ça.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    + Je ne vois pas les fonctions dont vous parlez ..
    C'est pourtant vous qui avez écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            def choix_4x4():
            def choix_5x5():
            def choix_6x6():
            def choix_7x7():
            def choix_8x8():
            def choix_9x9():
    Et qui demandiez que mettre en face...

    Citation Envoyé par Marrakchino Voir le message
    C'est peut etre une bonne idée de la faire et je vous en remercie énormément, mais ça reste un peu à coté de ce que j'espère faire avec mon programme.
    Ah ben tant pis, j'aurais essayé ;-)

    Sinon vous pourriez vous inspirer de ce code

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marrakchino Voir le message
    Merci bien ! Je verrais ça.
    J'ai zappé la doc concernant l'affichage des widgets :

    http://effbot.org/tkinterbook/pack.htm

    http://effbot.org/tkinterbook/grid.htm

    http://effbot.org/tkinterbook/place.htm

    @+.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est pourtant vous qui avez écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            def choix_4x4():
            def choix_5x5():
            def choix_6x6():
            def choix_7x7():
            def choix_8x8():
            def choix_9x9():
    Et qui demandiez que mettre en face...

    - W
    Justement, c'était les fonctions relatives à la dimension de la grille à créer ..


    Citation Envoyé par wiztricks Voir le message
    Ah ben tant pis, j'aurais essayé ;-)
    Je vous remercie encore une fois !



    Citation Envoyé par wiztricks Voir le message
    Sinon vous pourriez vous inspirer de ce code
    C'est un peu le meme, je vais jeter un coup d'oeil.

Discussions similaires

  1. Probleme courbe fonction Tkinter !
    Par qlathaud dans le forum Tkinter
    Réponses: 4
    Dernier message: 11/05/2015, 17h21
  2. Tkinter fonction .place() problème
    Par R3iD0r dans le forum Tkinter
    Réponses: 11
    Dernier message: 04/10/2010, 14h11
  3. scope des sous fonction et TkInter
    Par sopsag dans le forum Général Python
    Réponses: 14
    Dernier message: 30/10/2009, 17h12
  4. Réponses: 2
    Dernier message: 27/05/2007, 02h38
  5. problème d'appel de fonction avec bind (en Tkinter)
    Par piotrr dans le forum Tkinter
    Réponses: 4
    Dernier message: 09/05/2007, 19h39

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