Guide du débutant à la bibliothèque GUI standard en Python

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données.

introduction

Présentation de Tkinter

Python fournit une bibliothèque GUI standard appelée Tkinter. Le module Tkinter permet de créer des applications GUI de manière simple et rapide. Tkinter fournit 15 types de widgets. Certains des plus courants sont Button, Étiqueter, Marco, Menu. Le message, bouton radio, le texte, la barre de défilement, etc. Vous pouvez en savoir plus à ce sujet ici Oui ici.

Dans cet article. nous allons créer un jeu de petits nombres. L'utilisateur continuera à recevoir des questions numériques. Ils y répondront et cliqueront sur Entrée pour passer à la question suivante jusqu'à ce qu'ils décident de quitter et de traiter le résultat.. Les réponses correctes et incorrectes seront capturées pour afficher le résultat à la fin. Nous utiliserons des widgets comme Label, Fin, Entrée, Texte, Bouton. Commençons le déploiement sans plus tarder.

Mise en œuvre

1. Importer des packages

Comme d'habitude, c'est une bonne idée de séparer toutes les importations. Au moins, je l'aime tellement!

importer tkinter
importer au hasard
à partir d'une importation aléatoire randint
à partir du bouton d'importation tkinter
importer matplotlib.pyplot en tant que plt
importer numpy en tant que np

2. Création d'une fenêtre GUI et déclaration des variables globales

Nous allons créer la conception de l'interface. Décidez de la taille de la mise en page et d'un titre attrayant

racine = tkinter.Tk()
titre.racine("Êtes-vous intelligent!!")
racine.géométrie("400x200")
résultat_correct=0
réponses_correctes=0
total_questions=0
incorrect_answer=0

3. Fonction pour évaluer le résultat

Nous allons créer de petites définitions pour effectuer des tâches qui rendent le code facile à entretenir et à lire.

def évaluer(un événement):
    résultat_correct global
    entrée_utilisateur globale
    user_input_given = user_input.get()
    si str(user_input_given) == chaîne(résultat_correct):
        réponses_correctes globales
        bonnes_réponses += 1
        question suivante()
    autre:
        réponse incorrecte globale
        réponse_incorrecte += 1
        result = tkinter.Label(racine, texte="Pas de veine!!nLa bonne réponse est : "+str(résultat_correct), police=('Helvetica', 10))
        résultat.pack()
        question suivante()
        racine.après(1500, result.destroy)

4. Fonction pour créer une question

Usaremos aleatorio para crear un número entero aleatorio y una elección aleatoria para el operador ‘+’, ‘-‘ Oui ‘*’ afin que les utilisateurs puissent obtenir des ensembles aléatoires de questions numériques auxquelles répondre

def nextQuestion():
    user_input.focus_set()
    user_input.delete(0, tkinter.END)
    global first_num
    first_num = randint(1,15)
    second_num global
    second_num = randint(1,15)
    caractère global
    caractère = aléatoire.choix("+-*")
    global correct_result
    if character == '*':
        correct_result = first_num*second_num
    if character == '+':
        correct_result = first_num+second_num
    if character == '-':
        correct_result = first_num-second_num
    texte="Entrez la valeur de "+str(premier_num)+" "+caractère+" "+str(second_num)
    total_questions global
    total_questions += 1
    question_utilisateur.config(texte=texte)
    user_question.pack()

5. Quitter la fonction

Nous allons créer une petite fonction pour sortir et interagir et enregistrer les résultats.

def sortieCeci():
    imprimer("Nombre total de questions auxquelles ont répondu : "+str(total_questions))
    imprimer("Nombre total de réponses correctes : "+str(réponses correctes))
    imprimer("Nombre total de réponses incorrectes : "+str(réponse incorrecte))
    root.destroy()

6. Question initiale

Nous allons créer un premier ensemble de questions basé sur un nombre entier aléatoire et un ensemble aléatoire d'opérateurs numériques

first_num = randint(1,15)
second_num = randint(1,15)
caractère = aléatoire.choix("+-*")
if character == '*':
    correct_result = first_num*second_num
if character == '+':
    correct_result = first_num+second_num
if character == '-':
    correct_result = first_num-second_num

7. Création d'étiquettes

Nous allons créer le texte et la conception de l'interface.

user_question = tkinter.Label(racine, texte="Entrez la valeur de "+str(premier_num)+" "+caractère+" "+str(second_num), police=('Helvetica', 10))
user_question.pack()
user_input = tkinter.Entry(racine)
root.bind('<Revenir>',évaluer)
user_input.pack()
user_input.focus_set()
exitButton = bouton(racine, texte="QUITTER et vérifier le résultat", command=exitThis)
exitButton.pack(côté="Haut", expand=Vrai, padx=4, tampons = 4)

8. Démarrer l'interface graphique

root.mainloop()

9. Affichage des résultats

Usaremos una barra y un diagramme circulaire para mostrar el resultado a los usuarios después de que decidan salir del juego.

#Tracer le graphique à barres
plt.figure(0)
objets = ('Total Number of Questions','Correct Answers','Incorrect answers')
y_pos = np.arange(longueur(objets))
statistiques = [total_questions,réponses correctes,réponse incorrecte]
plt.bar(y_pos, Statistiques, align='center', alpha=0,5)
plt.xticks(y_pos, objets)
plt.ylabel('Numbers')
plt.titre('Your Result!')
#Tracer le camembert
si str(total_questions) != "0":
plt.figure(1)
étiquettes="Réponses correctes",'Incorrect answers'
sizes = [réponses correctes,réponse incorrecte]
couleurs = ['vert', 'red']
exploser = (0.1, 0) # exploser la 1ère tranche
plt.pie(tailles, exploser=exploser, étiquettes=étiquettes, couleurs=couleurs,
autopct="%1.1F%%", ombre=Vrai, angle de départ = 140)
plt.axis('equal')

#Montrer les deux graphiques
plt.show()

conclusion

Si tu es venu jusqu'ici, Il a dû être vraiment intrigué! Ensuite, voilà à quoi ça ressemble finalement

34432questions-9777808
13511analyse1-7912038
50426analyse2-8104108

Partagez vos pensées si cet article était intéressant ou vous a aidé de quelque manière que ce soit. Toujours ouvert aux améliorations et suggestions. Vous pouvez trouver le code dans Github

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données