Interface Graphique : Les widgets - exercices

Griser un bouton

Modifier le programme de l'exemple 4 ci-dessous pour griser le bouton B. :


#! /usr/bin/env python
# -*- coding:Utf8 -*-
from tkinter import *
def change():
    if B.cget('text')=='Il fait jour' :
        B.config(text = 'Il fait nuit')
        fen.title('Bonsoir')
    else :
        B.config(text = 'Il fait jour')
        fen.title('Bonjour')
fen = Tk()
fen.geometry("250x50")
fen.title('Bonjour')
B = Button(fen, text="Il fait jour", width = 20, command=change)
B.place(x = 20, y = 10)
fen.mainloop()

Résolution de l'exercice "griser un bouton".


#! /usr/bin/env python
# -*- coding:Utf8 -*-
from tkinter import *
def change():
    if B.cget('text')=='Il fait jour' :
        B.config(text = 'Il fait nuit')
        fen.title('Bonsoir')
    else :
        B.config(text = 'Il fait jour')
        fen.title('Bonjour')
fen = Tk()
fen.geometry("250x50")
fen.title('Bonjour')
B = Button(fen, text="Il fait jour", width = 20, command=change)
B.place(x = 20, y = 10)
B.config(state = DISABLED)
fen.mainloop()

Afficher des boutons

1. Quel est le rôle de ce programme :


import random
from tkinter import *

def anglais() :
    resultat(1)

def allemand() :
    resultat(2)

def espagnol() :
    resultat(3)

def resultat(choix) :
    if choix != 1 : A1.place_forget()
    if choix != 2 : A2.place_forget()
    if choix != 3 : E.place_forget()
fenetre = Tk()
fenetre.title('Choix')
fenetre.geometry('500x100')
Label(fenetre,text="Votre LV2 : ").place(x=10,y=10)
A1 = Button(fenetre,text="Anglais", width=15, command=anglais)
A1.place(x=50,y=30)
A2 = Button(fenetre,text="Allemand", width=15, command=allemand)
A2.place(x=200,y=30)
E = Button(fenetre,text="Espagnol", width=15, command=espagnol)
E.place(x=350,y=30)
fenetre.mainloop()

2. Modifier ce programme pour afficher les boutons verticalement à droite.

Résolution de l'exercice "afficher des boutons".


import random
from tkinter import *

def anglais() :
    resultat(1)

def allemand() :
    resultat(2)

def espagnol() :
    resultat(3)

def resultat(choix) :
    if choix != 1 : A1.place_forget()
    if choix != 2 : A2.place_forget()
    if choix != 3 : E.place_forget()

    
fenetre = Tk()
fenetre.title('Choix')
fenetre.geometry('200x500')

Label(fenetre,text="Votre LV2 : ").place(x=10,y=10)
A1 = Button(fenetre,text="Anglais", width=15, command=anglais)
A1.place(x=100,y=50)
A2 = Button(fenetre,text="Allemand", width=15, command=allemand)
A2.place(x=100,y=200)
E = Button(fenetre,text="Espagnol", width=15, command=espagnol)
E.place(x=100,y=350)
fenetre.mainloop()

jeu de pendu

Quel est le rôle de ce programme ?


from tkinter import *
def verif():
    if E.get().upper() == 'GENEROSITE' :
        L.config(text="Gagné !")
        B.place_forget()
    else :
        B.config(text="Non, réessayer ?")
fen = Tk()
fen.geometry("200x100")
fen.title("Mot à compléter")
m = 'G . N . R . . I . E'
L=Label(fen,text= m,width=20)
L.place(x=20,y=10)
E=Entry(fen,width=24)
E.place(x=20,y=30)
B=Button(fen,text="Valider",font='arial 9',width=20,command=verif)
B.place(x=20,y=60)
fen.mainloop()

Afficher des boutons

Voici une fonction nommée melangeMot(mot) qui permet de retourner les lettres mélangées du paramètre mot.


import random
def melangemot(mot) :
    melange = mot
    for i in range(len(mot)) :
        a = random.randint(0,len(mot)-1)
        b = random.randint(0,len(mot)-1)
        new = ""
        for j in range(len(melange)) :
            if j==a :
                new = new + melange[b]
            elif j==b :
                new = new + melange[a]
            else :
                new = new + melange[j]
        melange = new
    return melange

En utilisant la fonction melangeMot, réaliser un programme qui affiche un mot, dont les lettres sont en désordre, que le joueur doit retrouver.

Résolution de l'exercice "Deviner un mot".


from tkinter import *
import random
def melangemot(mot) :
    # fonction pour retourner les caractères mélangés du mot à deviner
    melange = mot
    for i in range(len(mot)) :
        a = random.randint(0,len(mot)-1)
        b = random.randint(0,len(mot)-1)
        new = ""
        for j in range(len(melange)) :
            if j==a :
                new = new + melange[b]
            elif j==b :
                new = new + melange[a]
            else :
                new = new + melange[j]
        melange = new
    return melange

def afficher():
    #fonction pour afficher les caractères mélangés
    print(B.cget('text'))

def verif():
    # fonction vérifier si le mot deviné est le mot initial
    if E.get().upper() == mot.upper():
        L.config(text="Gagné !")
        B1.place_forget()
    else :
        L.config(text="Perdu !")
        B1.place_forget()

fen = Tk()
fen.geometry("350x200")
fen.title('Deviner un mot')

mot = "bonjour"

B = Button(fen, text=melangemot(mot), width = 40, command=afficher)
B.place(x = 20, y = 10)

L=Label(fen,text= "Devinez ce mot dont les caractères sont mélangés",width=45)
L.place(x=0,y=60)

E=Entry(fen,width=80)
E.place(x=20,y=100)

B1=Button(fen,text="valider " ,font='arial 9',width=40,command=verif)
B1.place(x=20,y=130)

fen.mainloop()

Pierre-feuille-ciseaux

Réaliser le jeu de pierre, feuille, ciseaux avec une interface graphique ressemblant à cela : le joueur choisit l’un des boutons de la première ligne, les autres disparaissent alors laissant seulement le choix du joueur et celui de la machine.

exercice3

Résolution de l'exercice "Jeu Pierre-feuille-ciseaux".


import random
from tkinter import *

def pierre() :
    resultat(1)

def feuille() :
    resultat(2)

def ciseaux() :
    resultat(3)

def resultat(joueur) :
    if joueur != 1 : P1.place_forget()
    if joueur != 2 : F1.place_forget()
    if joueur != 3 : C1.place_forget()

    if ordi != 1 : P2.place_forget()
    if ordi != 2 : F2.place_forget()
    if ordi != 3 : C2.place_forget()

    if joueur == ordi :
        L.config(text="Egalité !")
    elif (joueur==1 and ordi == 3) or (joueur == 2 and ordi == 1) or (joueur == 3 and ordi == 2) :
        L.config(text="Vous avez gagné !")
    else :
        L.config(text="J'ai gagné !")
fenetre = Tk()
fenetre.title('Pierre - Feuille - Ciseaux')
fenetre.geometry('500x200')

Label(fenetre,text="Votre choix : ").place(x=10,y=10)
P1 = Button(fenetre,text="Pierre", width=15, command=pierre)
P1.place(x=50,y=30)
F1 = Button(fenetre,text="Feuille", width=15, command=feuille)
F1.place(x=200,y=30)
C1 = Button(fenetre,text="Ciseaux", width=15, command=ciseaux)
C1.place(x=350,y=30)
joueur = 0

Label(fenetre,text="Mon choix : ").place(x=10,y=80)
P2 = Button(fenetre,text="Pierre", width=15)
P2.place(x=50,y=100)
F2 = Button(fenetre,text="Feuille", width=15)
F2.place(x=200,y=100)
C2 = Button(fenetre,text="Ciseaux", width=15)
C2.place(x=350,y=100)
ordi = random.randint(1,3)

L = Label(fenetre,text="Faites votre choix")
L.place(x=10,y=180)

fenetre.mainloop()