Tutorial Python Tkinter: Managing PSG Players (Complete Explanation for Beginners) + #MySQL

Posted by

TUTO PYTHON TKINTER : gestion des joueurs du PSG

TUTO PYTHON TKINTER : gestion des joueurs du PSG

Dans ce tutoriel, nous allons apprendre à utiliser Tkinter, une bibliothèque Python pour créer des interfaces graphiques, pour gérer les joueurs du PSG. Ce tutoriel s’adresse aux débutants et sera une explication complète du processus.

Étape 1 : Créer une interface graphique

Pour commencer, nous allons créer une interface graphique avec Tkinter. Nous allons ajouter des éléments tels que des champs de texte pour entrer les informations des joueurs, des boutons pour ajouter, supprimer et mettre à jour les joueurs, etc.

Étape 2 : Gérer les joueurs du PSG

Nous allons créer des fonctions en Python pour ajouter, supprimer et mettre à jour les joueurs du PSG. Nous utiliserons des listes pour stocker les données des joueurs.

Étape 3 : Intégrer une base de données MySQL

Pour rendre notre application plus robuste, nous allons intégrer une base de données MySQL pour stocker les informations des joueurs. Nous allons créer une connexion à la base de données et utiliser des requêtes SQL pour gérer les données des joueurs.

Conclusion

En suivant ce tutoriel, vous apprendrez à utiliser Tkinter pour créer une interface graphique pour gérer les joueurs du PSG. Vous serez également initié à l’utilisation de MySQL pour stocker les données des joueurs de manière permanente. Ce tutoriel est parfait pour les débutants qui souhaitent en apprendre davantage sur le développement d’applications en Python.

0 0 votes
Article Rating
7 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@jbdev95
7 months ago

#pour installer mysql

import pymysql
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from PIL import ImageTk, Image

import tkinter as tk

#notre connection ici
def connection():
con = pymysql.connect(host='localhost', user='root', password='', db='psg')
return con

#Actualiser
def Actualiser():
for donne in tblEntet.get_children():
tblEntet.delete(donne)

txtid.delete(0,END)
txtNom.delete(0,END)
txtPrenom.delete(0,END)
txtPost.delete(0,END)
txtContrat.delete(0,END)
txtSalaire.delete(0,END)

meConnect = connection().cursor()
meConnect.execute("select * from joueur")

for row in meConnect:

tblEntet.insert('', END, value = row)
meConnect.close()

#Ajouter
def Ajouter():
matricule = txtid.get()
Nom = txtNom.get()
Prenom = txtPrenom.get()
Poste = txtPost.get()
Contrat = txtContrat.get()
Salaire = txtSalaire.get()

try :
conn = connection()
maBase =conn.cursor()
sql = "insert into joueur(matricule, nom, prenom, poste, contrat, salaire) values(%s,%s,%s,%s,%s,%s)"
val = (matricule, Nom, Prenom, Poste, Contrat, Salaire)
maBase.execute(sql, val)
conn.commit()
conn.close()
messagebox.showinfo("","ajout")
Actualiser()
except Exception as e:
print(e)
messagebox.showerror("","Erreur")

#Modifier
def Modifier():
matricule = txtid.get()
Nom = txtNom.get()
Prenom = txtPrenom.get()
Poste = txtPost.get()
Contrat = txtContrat.get()
Salaire = txtSalaire.get()

try :
conn = connection()
maBase =conn.cursor()
sql = "update joueur set nom=%s, prenom=%s, poste=%s, contrat=%s, salaire=%s where matricule=%s"
val = (Nom, Prenom, Poste, Contrat, Salaire,matricule)
maBase.execute(sql, val)
conn.commit()
conn.close()
messagebox.showinfo("","Modifie")
Actualiser()
except Exception as e:
print(e)
messagebox.showerror("","Erreur")

#Suprimer
def Supprimer():
matricule = txtid.get()

try :
conn = connection()
maBase =conn.cursor()
sql = "delete from joueur where matricule=%s"
val = (matricule)
maBase.execute(sql, val)
conn.commit()
conn.close()
messagebox.showinfo("","Supprimer")
Actualiser()
except Exception as e:
print(e)
messagebox.showerror("","Erreur")

#notre interface (Titre de notre application)
root = Tk()

root.title("GESTION DES JOUEURS DU PSG")
root.geometry("1050×720")
root.configure(background="#F0F0F0")
s = ttk.Style()
s.theme_use('clam')
root.resizable(False, False)

#Nos methodes

#Notre interface (partie Design)

#Image
img = Image.open("Python-tutopsg1.jpg")
image1 = img.resize((150, 100), Image.LANCZOS)
test = ImageTk.PhotoImage(image1)

lblImage = Label(root,image=test)
lblImage.grid(row=1,column=5, columnspan=8, rowspan=2, padx=150, pady=40)
#Titre
lblTitre = Label(root,bd=20,bg="#071D3C", fg="#FDFDFD",relief=RIDGE,text="GESTION SALAIRE DES JOUEURS DU PSG", font=('Century', 25) )
lblTitre.grid(row=1, column=0, columnspan=6, rowspan=2, padx=60, pady=52)

#Matricule
lblId = Label(root, text ="MATRICULE ", font=('Arial', 16))
lblId.grid(row=3, column=0, columnspan=1, padx=50, pady=10)

txtid = Entry(root, width=40, bd=5, font=('Arial',15))
txtid.grid(row=3, column=1, columnspan=4, padx=5,pady=0)

#Nom
lblNom = Label(root, text ="NOM ", font=('Arial', 16))
lblNom.grid(row=4, column=0, columnspan=1, padx=50, pady=10)

txtNom = Entry(root, width=40, bd=5, font=('Arial',15))
txtNom.grid(row=4, column=1, columnspan=4, padx=5,pady=0)

#Prenom
lblPrenom = Label(root, text ="PRENOM ", font=('Arial', 16))
lblPrenom.grid(row=5, column=0, columnspan=1, padx=50, pady=10)

txtPrenom = Entry(root, width=40, bd=5, font=('Arial',15))
txtPrenom.grid(row=5, column=1, columnspan=4, padx=5,pady=0)

#Post
lblPost = Label(root, text ="POST ", font=('Arial', 16))
lblPost.grid(row=6, column=0, columnspan=1, padx=50, pady=10)

txtPost = Entry(root, width=40, bd=5, font=('Arial',15))
txtPost.grid(row=6, column=1, columnspan=4, padx=5,pady=0)

#Contrat
lblContrat = Label(root, text ="CONTRAT ", font=('Arial', 16))
lblContrat.grid(row=7, column=0, columnspan=1, padx=50, pady=10)

txtContrat = Entry(root, width=40, bd=5, font=('Arial',15))
txtContrat.grid(row=7, column=1, columnspan=4, padx=5,pady=0)

#Salaire
lblSalaire = Label(root, text ="SALAIRE ", font=('Arial', 16))
lblSalaire.grid(row=8, column=0, columnspan=1, padx=50, pady=10)

txtSalaire = Entry(root, width=40, bd=5, font=('Arial',15))
txtSalaire.grid(row=8, column=1, columnspan=4, padx=5,pady=0)

#Nos Boutons

#bouton Ajouter
btnAjouter = Button(root, text="AJOUTER", padx=65, pady=10, width=10, bd=5, font=('Arial',15), command=Ajouter)
btnAjouter.grid(row=3, column=5, columnspan=1, rowspan=2)

#bouton Modifier
btnAjouter = Button(root, text="MODIFIER", padx=65, pady=10, width=10, bd=5, font=('Arial',15),command=Modifier)
btnAjouter.grid(row=4, column=5, columnspan=1, rowspan=2)

#bouton Supprimer
btnAjouter = Button(root, text="SUPPRIMER", padx=65, pady=10, width=10, bd=5, font=('Arial',15), command=Supprimer)
btnAjouter.grid(row=5, column=5, columnspan=1, rowspan=2)

#bouton Effacer
btnAjouter = Button(root, text="ACTUALISER", padx=65, pady=10, width=10, bd=5, font=('Arial',15), command=Actualiser)
btnAjouter.grid(row=7, column=5, columnspan=1, rowspan=2)

#Table

style = ttk.Style()
style.configure("mystyle.Treeview", bd=0, font=('Calibri', 12), rowheight=30)
style.configure("mystyle.Treeview.Heading", font=('Calibri', 16) )

tblEntet = ttk.Treeview(root,style="mystyle.Treeview", columns = (1,2,3,4,5,6),height=5, show = "headings")
tblEntet.grid(row=9, column=0, columnspan=8, rowspan=11, padx=10, pady=20)

#Entet
tblEntet.heading(1, text="Matricule", anchor=CENTER)
tblEntet.heading(2, text="Nom", anchor=CENTER)
tblEntet.heading(3, text="Prénom", anchor=CENTER)
tblEntet.heading(4, text="Post", anchor=CENTER)
tblEntet.heading(5, text="Contrat", anchor=CENTER)
tblEntet.heading(6, text="Salaire", anchor=CENTER)

#definir la taille de chaque colonnes
tblEntet.column(1, anchor=CENTER, width=100)
tblEntet.column(2, anchor=CENTER, width=150)
tblEntet.column(3, anchor=CENTER, width=150)
tblEntet.column(4, anchor=CENTER, width=100)
tblEntet.column(5, anchor=CENTER, width=100)
tblEntet.column(6, anchor=CENTER, width=100)

#Afficher les informations de la table
meConnect = connection().cursor()
meConnect.execute("select * from joueur")

for row in meConnect:
tblEntet.insert('', END, value = row)
meConnect.close()

def Affichage(a):
#nettoyer
txtid.delete(0,END)
txtNom.delete(0,END)
txtPrenom.delete(0,END)
txtPost.delete(0,END)
txtContrat.delete(0,END)
txtSalaire.delete(0,END)

selectionner = tblEntet.selection()[0]
txtid.insert(0, tblEntet.item(selectionner)['values'][0])
txtNom.insert(1, tblEntet.item(selectionner)['values'][1])

tblEntet.bind("<<TreeviewSelect>>", Affichage)

#Notre main
root.mainloop()

@stephMajeste
7 months ago

en tout cas cette playlist va vraiment m'aider dans ce que je compte faire

@yssoufsamake8240
7 months ago

frère, t'as vraiment des projets intéressants et c'est pas pour te critiquer mais si tu pouvais être clair et précis dans tes explications, ça aurait été mieux,
tu évoques trop les bla-bla dans tes vidéos qui n'ont aucune importance, écris tout simplement le code et expliques de façon brève et précise…

@fleuryfoula3593
7 months ago

Allo j'ai un souci,car je souhaiterais que vous faisiez une vidéo avec la possibilité de lancer les impressions, telles que journalières ou périodiques.la deuxième possibilité pour n'ai pas trop demander vous poussier ajouter cette possibilité avec les vidéos existante,t-elle que celle ci.
Merci

@fleuryfoula3593
7 months ago

Merci beaucoup jbdev95, franchement c'est tellement bon.

@rimchamkhe5992
7 months ago

J 'ai besion de creer un application qui affiche les resultats de tir des tireurs est ce c'est valable de suivre meme conception de cet application s'il vous je suis en besion de ta réponse !😭

@Starstiktok858
7 months ago

Cool cool. Bon travail Mr JB dev. Est ce qu'on peut discuter en privé ?