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 :

Questions à propos de tkinter


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut Questions à propos de tkinter
    Bonsoir.
    Voilà j'ai fait un programme pour un jeu de cartes tout bête, ou a chaque fois il faut répondre oui ou non pour piocher une carte.
    J'aimerai utiliser tkinter pour rendre le jeu un tout petit peu plus vivant, pck quand y'a que du texte.. Donc je souhaiterais mettre juste une image avec deux boutons OUI et NON à cliquer. Du genre:
    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
    import Tkinter
     
    racine=Tkinter.Tk()
    dessin=Tkinter.PhotoImage(file="cards.gif")
    label=Tkinter.Label(image=dessin)
    label.pack(side=Tkinter.LEFT)
     
    texte=Tkinter.Label(racine, text="Premier texte\ndans une fenetre", fg="black")
    texte.pack(side=Tkinter.RIGHT)
     
    bouton=Tkinter.Button(racine, text="OUI", command=self.oui)
    bouton.pack(side=Tkinter.BOTTOM)
    bouton2=Tkinter.Button(racine, text="NON", command=self.non)
    bouton2.pack(side=Tkinter.BOTTOM)
     
    racine.mainloop()
    Et en plus des boutons oui et non, j'aimerais que tous les PRINT de mon code de mon programme du jeu de cartes s'affiche dans la case de texte. Vous voyez ce que je veux dire ? Que à chaque fois que l'on clique sur oui ou non, dans le programme original, quand on répond oui ou non, le programme répond et dit qu'il a pioché ou pas ect. Tout ce texte je peux pas le faire afficher quelque part ? Ou c'est trop compliqué ?

    Merci de votre aide.
    Voici le code (long et un peu lourd) du jeu de cartes si ça peut 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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    import random
    tour=1
    total=0
    while True:
        if tour<9:
            print "Le "+str(tour)+" tour commence. Votre total est actuellement de "+str(total)+" points."
        if tour==8:
            print "Vous venez de terminer vos 8 tours. Votre score final est donc de "+str(total)+" points. Tapez oui si vous voulez relancer une partie."
            reponse= raw.input()
            while reponse not in "oui":
                print " Tapez oui si vous souhaitez rejouer."
            if reponse=="oui":
                break
     
        while True:
            cartesecrete=random.randrange(1,10)
            #1ere vague
            carte1= random.randrange(1,10)
            print "La carte distribuée est "+str(carte1)+". Tapez, oui, si vous souhaitez ramasser la carte, ou taper non si vous ne souhaiter pas la prendre, et vous arreter là."
            reponse=raw_input()
            while reponse not in ("oui","non"):
                print "Vous devez taper oui ou non."
                reponse=raw_input()
            if reponse=="oui":
                main=carte1
                print "Vous avez décidé de ramasser la carte. Vous possèdez donc en plus de la carte secrète, la carte "+str(main)+"."
            elif reponse=="non":
                score=cartesecrete
                ecart=20-score
                print "Vous avez donc décidé de vous arrêter. La carte secrète était la carte "+str(cartesecrete)+". Vous n'avez ramassé aucune carte. L'écart à 20 est donc de "+str(ecart)+". Vous gagnez donc "+str(ecart)+"points."
                tour=tour+1
                break
     
            #2eme vague
            carte2= random.randrange(1,10)
            print "La carte distribuée est "+str(carte2)+". Tapez, oui, si vous souhaitez ramasser la carte, ou taper non si vous ne souhaiter pas la prendre, et vous arreter là."
            reponse=raw_input()
            while reponse not in ("oui","non"):
                print "Vous devez taper oui ou non."
                reponse=raw_input()
            if reponse=="oui":
                if 20-cartesecrete-carte1-carte2<0:
                    total=total+10
                    print "Quel dommage. Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte votre total passe à plus de 20... Vous gagnez donc 10 points. Votre score est donc de "+str(total)+"."
                    tour=tour+1
                    break
                elif  20-cartesecrete-carte1-carte2==0: #Cas où le total fait pile 20
                    total=total-20
                    tour=tour+1
                    print "Felicitations vos réalisez un TWENTY !!! Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte "+str(carte2)+" vous arrivez donc à un total de 20, vous perdez 20 points! Votre score est donc de "+str(total)+"."
                    break
                else:
                    main=carte1, carte2
                    print "Vous avez décidé de ramassez la carte. Vous possèdez donc en plus de la carte secrète, les cartes "+str(main)+"."
     
            elif reponse=="non":
                main=carte1
                total=total+20-cartesecrete-carte1
                print "Vous avez donc décidé de vous arrêter. La carte secrète était la carte "+str(cartesecrete)+". Et vous avez ramssassé les cartes "+str(main)+". L'écart à 20 est donc de "+str(20-cartesecrete-carte1)+". Vous gagnez donc "+str(ecart)+" points. Votre score passe à "+str(total)+"."
                tour=tour+1
                total=0
                break
     
            #3eme vague
            carte3= random.randrange(1,10)
            print "La carte distribuée est "+str(carte3)+". Tapez, oui, si vous souhaitez ramasser la carte, ou taper non si vous ne souhaiter par la prendre, et vous arreter là."
            reponse=raw_input()
            while reponse not in ("oui","non"):
                print "Vous devez taper oui ou non."
                reponse=raw_input()
     
            if reponse=="oui":
                if 20-cartesecrete-carte1-carte2-carte3<0:
                    total=total+10
                    tour=tour+1
                    print "Quel dommage. Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte votre total passe à plus de 20... Vous gagnez donc 10 points. Votre score est donc de "+str(total)+"."
                    break
                elif  20-cartesecrete-carte1-carte2-carte3==0: #Cas où le total fait pile 20
                    total=total-20
                    tour=tour+1
                    print "Felicitations vos réalisez un TWENTY !!! Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte "+str(carte3)+" vous arrivez donc à un total de 20, vous perdez 20 points! Votre score passe donc à "+str(total)+"."
                    break
                else:
                    main=carte1, carte2, carte3
                    print "Vous avez décidé de ramassez la carte. Vous possèdez donc en plus de la carte secrète, les cartes "+str(main)+"."
     
            elif reponse=="non":
                main=carte1, carte2
                ecart=20-cartesecrete-carte1-carte2
                total=total+ecart
                print "Vous avez donc décidé de vous arrêter. La carte secrète était la carte "+str(cartesecrete)+". Et vous avez ramssassé les cartes "+str(main)+". L'écart à 20 est donc de "+str(ecart)+". Vous passez donc à un score de "+str(total)+" points."
                tour=tour+1
                break
     
            #4eme vague
            carte4= random.randrange(1,10)
            print "La carte distribuée est "+str(carte4)+". Tapez, oui, si vous souhaitez ramasser la carte, ou taper non si vous ne souhaiter par la prendre, et vous arreter là."
            reponse=raw_input()
            while reponse not in ("oui","non"):
                print "Vous devez taper oui ou non."
                reponse=raw_input()
     
            if reponse=="oui":
                main=carte1, carte2, carte3, carte4
                if 20-cartesecrete-carte1-carte2-carte3-carte4<0:
                    total=total+10
                    tour=tour+1
                    print "Quel dommage. Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte votre total passe à plus de 20... Vous gagnez donc 10 points. Votre score est donc de "+str(20-cartesecrete-carte1)+"."
                    break
                elif  20-cartesecrete-carte1-carte2-carte3-carte4==0: #Cas où le total fait pile 20
                    total=total-20
                    tour=tour+1
                    print "Felicitations vos réalisez un TWENTY !!! Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte "+str(carte4)+" vous arrivez donc à un total de 20, vous perdez 20 points! Vous passez donc à un score de "+str(total)+"."
                    break
                else:
                    main=carte1, carte2, carte3, carte4
                    print "Vous avez décidé de ramassez la carte. Vous possèdez donc en plus de la carte secrète, les cartes "+str(main)+"."
     
            elif reponse=="non":
                main=carte1, carte2, carte3
                ecart=20-cartesecrete-carte1-carte2-carte3
                total=total+ecart
                print "Vous avez donc décidé de vous arrêter. La carte secrète était la carte "+str(cartesecrete)+". Et vous avez ramssassé les cartes "+str(main)+". L'écart à 20 est donc de "+str(ecart)+". Vous gagnez donc "+str(ecart)+" points.Vous passez donc à un score de "+str(total)+"."
                tour=tour+1
                break
     
            #5eme vague
            carte5= random.randrange(1,10)
            print "La carte distribuée est "+str(carte5)+". Tapez, oui, si vous souhaitez ramasser la carte, ou taper non si vous ne souhaiter par la prendre, et vous arreter là."
            reponse=raw_input()
            while reponse not in ("oui","non"):
                print "Vous devez taper oui ou non."
                reponse=raw_input()
     
            if reponse=="oui":
                main=carte1, carte2, carte3, carte4, carte5
                if 20-cartesecrete-carte1-carte2-carte3-carte4-carte5<0:
                    total=total+10
                    tour=tour+1
                    print "Quel dommage. Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte votre total passe à plus de 20... Vous gagnez donc 10 points. Votre score est donc de "+str(total)+"."
                    break
                elif  20-cartesecrete-carte1-carte2-carte3-carte4-carte5==0: #Cas où le total fait pile 20
                    total=total-20
                    tour=tour+1
                    print "Felicitations vos réalisez un TWENTY !!! Votre carte secrète était "+str(cartesecrete)+". En ramassant la carte "+str(carte4)+" vous arrivez donc à un total de 20, vous perdez 20 points! Vous passez donc à un score de "+str(total)+"."
                    break
                else:
                    main=carte1, carte2, carte3, carte4, carte5
                    total=total+ecart
                    print "Il s'agissait de la 5eme et derniere carte. Votre carte secrète était "+str(cartesecrete)+".En ayant ramassé la dernière carte vous possèder en plus de la carte secrète les cartes "+str(main)+".L'écart à 20 est donc de "+str(ecart)+". Votre score passe donc à "+str(total)+"."
                    break        
            elif reponse=="non":
                main=carte1, carte2, carte3, carte4
                ecart=20-cartesecrete-carte1-carte2-carte3-carte4
                total=total+ecart
                print "Vous avez donc décidé de vous arrêter. La carte secrète était la carte "+str(cartesecrete)+". Et vous avez ramssassé les cartes "+str(main)+". L'écart à 20 est donc de "+str(ecart)+". Vous gagnez donc "+str(ecart)+" points.Vous passez donc à un score de "+str(total)+"."
                tour=tour+1
                break

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir yannjuve,

    Franchement j'ai regarder... Mais je n'ai pas le courage.
    Ce n'est pas un reproche, c'est juste que le code présenté ne vas pas du tout : Il est grand temps de passer aux fonctions et d'arrêter de prendre while pour la réponse universelle aux loop.
    Tu as tester ton code Tkinter ? C'est impossible (self, perte de référence...).
    Commence par faire ta fenêtre graphique (fonctionnelle) avec tes deux boutons et pense la question à l'envers.
    Je répète : Ce n'est pas un reproche. C'est juste à revoir.

    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut
    Salut.
    Je suis pas très bon en programmation. J'ai commencé depuis pas longtemps. Donc je comprends pas tout ce que tu m'as dis, faut que ça reste très simple pour moi en fait
    Le truc c'est que mon code pour mon jeu de carte marche. Mais j'aimerais donc trouver le moyen le plus simple pour mettre juste une image deux boutons et hop.

    Mon code Tkinter fais juste aparaitre mon image, et mes deux boutons, mais il n'y a aucun lien entre mon code tkinter et mon code de mon jeu de cartes.
    Et le truc c'est que je sais pas comment ni ou faudrait que je l'intègre dans le code Tkinter.

    J'espère m'etre fait un peu comprendre :s

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    On avait bien compris yannjuve.
    Bon, un petit coup de main. Pour simplifier la chose je passe par la class Variable de Tkinter.

    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import Tkinter
    import random
     
    #fonctions du dico. Non fonctionnel et juste pour l'exemple.
    def depart():
        phrase.set("Premiere question")
        carte.set(random.randrange(1,10))
        total.set(total.get() +1)
     
    def q2():
        phrase.set("Deuxieme question")
        carte.set(random.randrange(1,10))
        total.set(total.get() +1)
     
    def quitter():
        racine.quit()
     
    #callbacks
    def callback(*args):
        if reponse.get() == True:
            actions[phrase.get()][0]()
        elif reponse.get() == False:
            actions[phrase.get()][1]()
     
    def tourcallback(*args):
        afftour['text'] = 'Tour :' + str(tour.get())
     
    def totalcallback(*args):
        afftotal['text'] = 'Total :' + str(total.get())
     
    def cartecallback(*args):
        affcarte['text'] = str(carte.get())
     
    # dico des actions.
    actions = {"Cliquez sur oui pour commencer, non pour quitter": (depart, quitter), "Premiere question": (q2, quitter), "Deuxieme question": (quitter, quitter)}
     
    racine=Tkinter.Tk()
     
    #Affichage de tour/total
    conteneur=Tkinter.Frame(racine)
    conteneur.pack(side=Tkinter.TOP)
    afftour=Tkinter.Label(conteneur, fg="black")
    afftour.pack(side=Tkinter.RIGHT)
    afftotal=Tkinter.Label(conteneur, fg="black")
    afftotal.pack(side=Tkinter.LEFT)
    tour=Tkinter.IntVar()
    total=Tkinter.IntVar()
    tour.trace_variable('w', tourcallback)
    total.trace_variable('w', totalcallback)
    tour.set(1)
    total.set(0)
     
    #dessin=Tkinter.PhotoImage(file="cards.gif")
    #label=Tkinter.Label(image=dessin)
    #label.image=dessin
    #label.pack(side=Tkinter.LEFT)
     
    phrase=Tkinter.StringVar()
    Tkinter.Label(racine, textvariable=phrase, fg="black").pack()
    phrase.set("Cliquez sur oui pour commencer, non pour quitter")
     
    #Affichage carte
    carte=Tkinter.IntVar()
    carte.trace_variable('w', cartecallback)
    cont=Tkinter.Frame(racine)
    cont.pack()
    Tkinter.Label(cont, text="La carte distribuée est", fg="black").pack()
    affcarte = Tkinter.Label(cont, fg="black")
    affcarte.pack()
     
    fncont=Tkinter.Frame(racine)
    fncont.pack(side=Tkinter.BOTTOM)
    reponse=Tkinter.BooleanVar()
    reponse.trace_variable('w', callback)
    Tkinter.Button(racine, text="OUI", command=lambda: reponse.set(True)).pack(side=Tkinter.LEFT)
    Tkinter.Button(racine, text="NON", command=lambda: reponse.set(False)).pack(side=Tkinter.RIGHT)
     
    racine.mainloop()
    A toi de voir si cela te vas et de finir les fonctions.

    @+

    Edit : Si tu souhaite garder ton code tels quel il reste aussi sys.stdin.read et sys.stdout.write... Bonjour l'usine.

  5. #5
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077

Discussions similaires

  1. Question à propos des compilateurs
    Par elf dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 20/07/2005, 17h00
  2. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  3. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  4. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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