Fonctionnement de grid

Dis bonjour.

Écrire un script python ouvrant une fenêtre tkinter.

Avec la méthode grid, obtenir : dis bonjour

On a utilisé ici deux étiquettes (widget Label), deux widgets d'entrée (Entry) et un bouton.

L'utilisateur entre son nom et son prénom. Un clic sur le bouton affiche alors une étiquette (Label) comme ci-dessous :

dis bonjour

Ce Label "bonjour" est également placé avec la méthode grid. On utilise la méthode get() pour récupérer la valeur entrée dans le widget Entry.

A vous !


import tkinter




def  bonjour() :
    prenom = entree1.get()
    nom = entree2.get()
    etiquette3.config(text = "Bonjour "+prenom+" "+nom+".")
    etiquette3.grid(row=2, column=0)


fenetre = tkinter.Tk() 



etiquette1 = tkinter.Label( fenetre, text = 'Votre prénom : ')
etiquette1.grid(row =0, column = 0)

etiquette2 = tkinter.Label( fenetre, text = 'Votre nom : ')
etiquette2.grid(row =1, column = 0)

entree1 = tkinter.Entry(fenetre)
entree1.grid(row=0, column=1)

entree2 = tkinter.Entry(fenetre)
entree2.grid(row=1, column=1)


bouton = tkinter.Button(fenetre, text = 'Clic', command=bonjour)
bouton.grid(row=3, column=1)

etiquette3 = tkinter.Label( fenetre, text = '')
 
 
fenetre.mainloop()

Calcul mental.

Écrire un programme, avec une interface tkinter, qui permette de tester la connaissance des tables de multiplication de l'utilisateur.

  • Un bouton doit permettre de lancer une nouvelle demande de multiplication.
  • Un emplacement est prévu pour que l'utilisateur entre sa réponse.
  • Un bouton permet à l'utilisateur d'envoyer sa réponse.
  • L'ordinateur répond par Vrai ou Faux à la proposition de l'utilisateur.

Une solution possible :

import tkinter
import random


bonneReponse = 0 # variable qui contiendra la réponse à la question posée par l'ordinateur

def demande() :
    global bonneReponse
    ok.config( text = "" ) # remise à zéro du champ de validation/invalidation par l'ordinateur
    a = random.randint(2,12)
    b = random.randint(2,12)
    q = "{} * {} = ? ".format(a,b)
    question.config( text = q )
    bonneReponse = a*b
    
    
def verifier() :
    global bonneReponse
    rep = eval(reponseUtilisateur.get())
    if rep == bonneReponse : 
        ok.config( text = "Réussi !" )
    else :
        ok.config( text = "Il faut encore réviser." )
        
    
    
    
# la fenêtre principale :
fenetrePrincipale = tkinter.Tk() 

# le cadre pour les questions : 
cadreQuestion = tkinter.Frame(fenetrePrincipale, bg = 'yellow')

# le cadre pour les réponses de l'utilisateur : 
cadreReponse = tkinter.Frame(fenetrePrincipale, bg = 'orange')

# le cadre pour la correction par l'ordinateur :
cadreVraiFaux = tkinter.Frame(fenetrePrincipale, bg = 'magenta')

# positionnement des cadres : 
cadreVraiFaux.pack(side='bottom', fill='x')
cadreQuestion.pack(side='left',fill='y')
cadreReponse.pack(side='right',fill='y') 


################################################################
###  Etiquettes, boutons, entrées  
###############################################################

# dans le cadre des questions : 
question = tkinter.Label( cadreQuestion, text='', bg = 'yellow')
question.grid(row =0, column = 0, pady=20)

relance = tkinter.Button( cadreQuestion, text='Nouvelle demande', command = demande)
relance.grid(row=1, column=0)
 

# dans le cadre des réponses utilisateur : 
votreReponse = tkinter.Label(cadreReponse, text = 'Entrez votre réponse : ', bg = 'orange')
votreReponse.grid(row = 0, column =0)

reponseUtilisateur = tkinter.Entry(cadreReponse)
reponseUtilisateur.grid(row=1, column=0, padx=10, pady=10)

valider = tkinter.Button(cadreReponse,text = 'Confirmez votre réponse en cliquant', command = verifier)
valider.grid(row = 2, column =0)
 
 
# dans le cadre  réponseVraiFaux  : 
ok = tkinter.Label(cadreVraiFaux, text='', bg = 'magenta', font= ('Helvetica',12) )
ok.grid(row=0, column=0, padx=80, pady = 20)
 
 
# maintenir fenêtre ouverte :
fenetrePrincipale.mainloop()