Afficher une fenêtre à partir d'un bouton

Résolu/Fermé
Python290 Messages postés 8 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018 - Modifié le 13 mai 2018 à 18:20
Python290 Messages postés 8 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018 - 19 mai 2018 à 15:45
Salut tout le monde !
Je débute sur python et je suis actuellement sur la version 3.6.4 de python et je programme un puissance 4 , j'ai créer un bouton "Règles du jeu" et je voudrais savoir comment lier ce bouton à une fenêtre ou document qui s'ouvrira laquelle/lequel j'aurai défini les règles
Merci d'avance pour vos réponse :)
Voici mon programme :

from tkinter import*

def pos_arrondie(x,y):
    global cote
    x1=cote*int(x/cote)
    y1=cote*int(y/cote)
    return x1,y1

def animation():
    global ydebut,yfin,pion,cote,x
    can.coords(pion,x,ydebut,x+cote,ydebut+cote)
    ydebut+=50
    i=int(x/cote)
    if ydebut<=yfin[i]:
        can.after(50,animation)
        

def cercle(event):
    global cote,pion,ydebut,yfin,x,y,compteur
    ydebut=0
    x,y=pos_arrondie(event.x,event.y)
    if compteur%2:
        pion=can.create_oval(x,ydebut,x+100,ydebut+100,fill="yellow")
        compteur+=1
        i=int(x/cote)
        yfin[i]-=cote
        print(yfin)
        animation()
    else :
        pion=can.create_oval(x,ydebut,x+100,ydebut+100,fill="red")
        compteur+=1
        i=int(x/cote)
        yfin[i]-=cote
        animation()
    print(compteur) 

cote=100
compteur=0
yfin=[6*cote,6*cote,6*cote,6*cote,6*cote,6*cote,6*cote]
fen = Tk()
fen.title("Puissance 4")
can=Canvas(fen,width=700,height=600,bg='yellow') #HEIGHT=hauteur
for i in range(6):
    can.create_line(0,i*cote,7*cote,i*cote)
for j in range(7):
    can.create_line(j*cote,0,j*cote,6*cote)
can.pack(side=BOTTOM)
b1=Button(fen,text='Quitter',command=fen.quit,fg='white',bg='black')
b1.pack(side=BOTTOM)
bou=Button(fen,text='REGLE DU JEU',fg='white',bg='green')
bou.pack()
bou=Button(fen,text='JOUEUR 1',fg='yellow',bg='black')
bou.pack(side =LEFT)
bou=Button(fen,text='JOUEUR 2',fg='red',bg='black')
bou.pack(side =RIGHT)
can.bind("<Button-1>",cercle)
fen.mainloop()
fen.destroy()


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
13 mai 2018 à 19:01
J'ai déjà fait un truc du genre... Je sais pas si c'est très propre par contre !
J'ai tout simplement fais ma fenêtre dans une fonction que j'appelle en cliquant sur le bouton :


def regle_du_jeu() :
    # Création de la fenetre_regle_du_jeuetre
    fenetre_regle_du_jeu = Tk()
    fenetre_regle_du_jeu.title("Règle du jeu")

    # Définition du texte à afficher
    texte = """
           RÈGLE DU JEU :
           ------------

 → Ici, on met toute les règles du jeu...

"""

    # Définition de la zone de texte
    champ_info = Label(fenetre_regle_du_jeu, text = texte)
    champ_info.pack()

    # Définition du bouton quitter (Le programme)
    bouton_quitter = Button(fenetre_regle_du_jeu, text="Quitter", command=fenetre_regle_du_jeuetre.quit)
    bouton_quitter.pack(side=LEFT)

    # Définition du bouton Fermer (juste la fenetre_regle_du_jeu)
    bouton_ok = Button(fenetre_regle_du_jeu, text="Fermer", command=fenetre_regle_du_jeu.destroy)
    bouton_ok.pack(side=RIGHT)


et pour l'appeler il suffit d'un bouton !

Je sais pas si sa répond bien à ta question...
Peut-être que quelqu'un à une meilleur solution, je ne me suis jamais vraiment penché sur la question !

Bonne fin de week-end !
3
Python290 Messages postés 8 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018
19 mai 2018 à 12:34
J'ai essayer d'insérer ton programme dans le mien mais je n'y arrive pas, est-ce que tu peux essayer avec le mien stp ?
0
Python290 Messages postés 8 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018
19 mai 2018 à 15:45
C'est bon j'ai réussi merci pour ton aide :)
0