Skip to content

Instantly share code, notes, and snippets.

@KataKatis
Last active March 13, 2021 11:23
Show Gist options
  • Save KataKatis/a28115fa5abd9736f4a1ffdec1aedd31 to your computer and use it in GitHub Desktop.
Save KataKatis/a28115fa5abd9736f4a1ffdec1aedd31 to your computer and use it in GitHub Desktop.
Bonjour en gros chui en train d'essayer de faire du tkinter le fichier cinema.py fonctionne mais il pu la merde pcq il est optimiser (vous pourrez le voir en lisant parce qu'il n'y a pas de boucle). Je ne sais pas comment faire et en cherchant sur internet je n'ai toujours pas compris comment faire. Vous pouvez m'aider a faire en sorte de réduir…
"""---------------------------------------------------------------------------------
Ce programe c clairement de la merde parce que j'ai pas réussi à faire de boucle
au niveau de la création des labels.
Il faut l'optimiser si il y a le temps. Aussi si on ajoute un film,
le bouton pour reserver ainsi que sa ligne d'infos ne se créera pas seule.
---------------------------------------------------------------------------------"""
import tkinter as tk
from functools import partial # permet de passer un argument à une fonction dans un bouton
class Cinema:
def __init__(self):
self.window = tk.Tk() # creation fenetre
self.window.title("Cinema") # titre de la fenetre
self.window.geometry("720x480") # taille de la fenetre
self.movies = [
{
"titre": "Voyage au centre du HTML",
"horaire": "17h35",
"nombre de places": 200
},
{
"titre": "Les 9 jsons cachés",
"horaire": "15h00",
"nombre de places": 80
},
{
"titre": "Algobox - le film",
"horaire": "10h50",
"nombre de places": 120
}
]
self.frame = tk.Frame(self.window) # creation de la frame qui va contenir les films
self.create_widgets() # creation de tous les elements
self.frame.pack() # affichage de la frame
def reserve_place(self, n): # fonction qui enleve 1 au nombre de places du film qu'on veut reverse
self.movies[n]["nombre de places"] -= 1
if n == 0:
self.label_film3.config(text=self.movies[n]["nombre de places"])
elif n ==1:
self.label_film6.config(text=self.movies[n]["nombre de places"])
else:
self.label_film9.config(text=self.movies[n]["nombre de places"])
if self.movies[n]["nombre de places"] == 0 and n == 0:
self.label_film3.config(text="Film complet !")
self.reserver.config(state=tk.DISABLED)
elif self.movies[n]["nombre de places"] == 0 and n == 1:
self.label_film6.config(text="Film complet !")
self.reserver1.config(state=tk.DISABLED)
elif self.movies[n]["nombre de places"] == 0 and n == 2:
self.label_film9.config(text="Film complet !")
self.reserver2.config(state=tk.DISABLED)
def create_widgets(self):
self.create_label()
self.create_button()
def create_label(self):
self.label_title = tk.Label(self.window, text="Voici les film à l'affiche:", font=("Helvetica", 15))
self.label_title.pack(pady=(5, 15))
self.label_film1 = tk.Label(self.frame, text="{}".format(self.movies[0].get("titre")))
self.label_film1.grid(row=0, column=0, padx=(0, 10))
self.label_film2 = tk.Label(self.frame, text="{}".format(self.movies[0].get("horaire")))
self.label_film2.grid(row=0, column=1, padx=10)
self.label_film3 = tk.Label(self.frame, text="{}".format(self.movies[0].get("nombre de places")))
self.label_film3.grid(row=0, column=2, padx=10)
self.label_film4 = tk.Label(self.frame, text="{}".format(self.movies[1].get("titre")))
self.label_film4.grid(row=1, column=0, padx=(0, 10))
self.label_film5 = tk.Label(self.frame, text="{}".format(self.movies[1].get("horaire")))
self.label_film5.grid(row=1, column=1, padx=10)
self.label_film6 = tk.Label(self.frame, text="{}".format(self.movies[1].get("nombre de places")))
self.label_film6.grid(row=1, column=2, padx=10)
self.label_film7 = tk.Label(self.frame, text="{}".format(self.movies[2].get("titre")))
self.label_film7.grid(row=2, column=0, padx=(0, 10))
self.label_film8 = tk.Label(self.frame, text="{}".format(self.movies[2].get("horaire")))
self.label_film8.grid(row=2, column=1, padx=10)
self.label_film9 = tk.Label(self.frame, text="{}".format(self.movies[2].get("nombre de places")))
self.label_film9.grid(row=2, column=2, padx=10)
def create_button(self): # les boutons pour chacun des films possible de reverser
self.reserver = tk.Button(self.frame, text="Réserver", font=("Helvetica", 10), bg="#FFF", fg="#000", command=partial(self.reserve_place, 0))
self.reserver.grid(row=0, column=3, padx=(10, 0))
self.reserver1 = tk.Button(self.frame, text="Réserver", font=("Helvetica", 10), bg="#FFF", fg="#000", command=partial(self.reserve_place, 1))
self.reserver1.grid(row=1, column=3, padx=(10, 0))
self.reserver2 = tk.Button(self.frame, text="Réserver", font=("Helvetica", 10), bg="#FFF", fg="#000", command=partial(self.reserve_place, 2))
self.reserver2.grid(row=2, column=3, padx=(10, 0))
cdl = Cinema()
cdl.window.mainloop() # affiche de la fenetre
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment