Python >> Tutoriel Python >  >> Python GUI >> Tkinter GUI

Application Coin Flip dans Python Tkinter - Un guide complet

Dans ce tutoriel, nous allons créer une application coin flip en utilisant Python Tkinter. Tkinter est la bibliothèque Python GUI standard qui permet de créer des applications basées sur une interface utilisateur graphique.

Lire aussi :Tutoriel Python Tkinter – Partie 1

Construire l'application Coin Flip

Pour ce programme, nous avons besoin des bibliothèques Python NumPy, Pillow et Tkinter. Si vous n'avez pas les modules dans votre système, assurez-vous d'utiliser le pip commande dans cmd.

pip install numpy
pip install pillow
pip install tk

Importer des modules

Après avoir installé les bibliothèques, nous pouvons commencer à développer notre application en important tous les modules de notre programme.

import numpy as np
from tkinter import *
from PIL import Image, ImageTk

Création de la fenêtre Basic de l'application

Tout d'abord, nous allons initialiser la classe Tkinter en utilisant Tk() objet et affectez-le à la variable 'app'. Dans la deuxième ligne de code, nous spécifions la taille de la fenêtre de l'application en utilisant le geometry méthode.

Ensuite, nous allons attribuer la couleur d'arrière-plan de la fenêtre de l'application à l'aide de la méthode de configuration et définir la couleur comme attribut bg. Par défaut, vous pouvez redimensionner la fenêtre et vous pouvez utiliser le resizable méthode pour s'assurer qu'il reste de la même taille.

app = Tk()
 
app.title("The Coin Flipper!")
app.geometry('300x300+50+50')
app.resizable(False, False)
app.configure(bg='#2ECC71')
 
app.mainloop()

Après avoir exécuté le code ci-dessus, nous obtiendrons l'écran ci-dessous.

Charger des images dans le programme

Dans cette étape, nous allons charger des images du côté pile et face d'une pièce de monnaie dans notre programme. Les images doivent être enregistrées dans le même répertoire que votre fichier de code pour s'assurer que le code fonctionne parfaitement.

app = Tk()
 
app.title("The Coin Flipper!")
app.geometry('300x300+50+50')
app.resizable(False, False)
app.configure(bg='#2ECC71')

#Heads image
load = Image.open("Heads.png")
heads = ImageTk.PhotoImage(load)
#Tails image
load = Image.open("Tails.png")
tails = ImageTk.PhotoImage(load)

app.mainloop()

Ajout de widgets à la fenêtre d'application

Maintenant que notre fenêtre principale est prête, nous allons ajouter des widgets à l'application.

Tout d'abord, nous devons ajouter le titre de l'application sous la forme d'un widget d'étiquette. Ensuite, nous avons besoin d'un bouton qui lancera la pièce chaque fois que l'utilisateur appuie dessus. Parallèlement à cela, nous allons ajouter une fonction toss_coin et l'ajouter en tant que command attribut dans le bouton. Nous compléterons la fonction dans les sections suivantes.

app = Tk()
 
app.title("The Coin Flipper!")
app.geometry('300x300+50+50')
app.resizable(False, False)
app.configure(bg='#2ECC71')

load = Image.open("Heads.png")
heads = ImageTk.PhotoImage(load)
load = Image.open("Tails.png")
tails = ImageTk.PhotoImage(load)

# Title of the Application
Title = Label(text="Welcome to The Coin Fliper!!",
              bg="black",fg="white",font=("Arial", 14)).pack()

# Button and Function to FLip the Coin
def toss_coin():
    pass

btn1=Button(text="Flip the Coin!!", font=("Arial", 10), command=toss_coin, 
            bg='black', fg='white', activebackground="red", 
            padx=10, pady=10)
btn1.pack()

app.mainloop()

Ensuite, nous devons ajouter l'image qui changera au clic du bouton. Pour la même chose, nous ajouterons un Label et la définir comme image. Maintenant, c'est à vous de décider si vous avez besoin de l'application pour commencer avec les têtes ou les queues. Je commence par le heads photo.

app = Tk()
 
app.title("The Coin Flipper!")
app.geometry('300x300+50+50')
app.resizable(False, False)
app.configure(bg='#2ECC71')

load = Image.open("Heads.png")
heads = ImageTk.PhotoImage(load)
load = Image.open("Tails.png")
tails = ImageTk.PhotoImage(load)

Title = Label(text="Welcome to The Coin Fliper!!",
              bg="black",fg="white",font=("Arial", 14)).pack()

def toss_coin():
    pass

# Image as a Label
img = Label(image=heads)
img.pack()

btn1=Button(text="Flip the Coin!!", font=("Arial", 10), command=toss_coin, 
            bg='black', fg='white', activebackground="red", 
            padx=10, pady=10)
btn1.pack()


app.mainloop()

Implémentation de la fonction toss_coin()

Lorsque nous lançons une pièce, elle a 50 % de chances qu'elle tombe sur pile ou face. Pour nous assurer que nous y parviendrons, nous utiliserons le module NumPy. Le random.binomial la fonction renverra soit un, soit zéro.

Sur la base de la valeur que nous obtenons, nous rendrons une image pile ou face. Le code de la fonction est ci-dessous.

def toss_coin():
    result = np.random.binomial(1,0.5)
    if(result == 1):
        i.config(image = heads)
         
    else:
        i.config(image = tails)

Le code complet

Le code complet ressemblera à ceci :

app = Tk()
 
app.title("The Coin Flipper!")
app.geometry('300x300+50+50')
app.resizable(False, False)
app.configure(bg='#2ECC71')

load = Image.open("Heads.png")
heads = ImageTk.PhotoImage(load)
load = Image.open("Tails.png")
tails = ImageTk.PhotoImage(load)

Title = Label(text="Welcome to The Coin Fliper!!",
              bg="black",fg="white",font=("Arial", 14)).pack()

def toss_coin():
    result = np.random.binomial(1,0.5)
    if(result == 1):
        img.config(image = heads)
         
    else:
        img.config(image = tails)

img = Label(image=heads)
img.pack()

btn1=Button(text="Flip the Coin!!", font=("Arial", 10), command=toss_coin, 
            bg='black', fg='white', activebackground="red", 
            padx=10, pady=10)
btn1.pack()


app.mainloop()

Exemples de sorties

Lire aussi :Comment créer un calculateur d'âge graphique dans Python Tkinter