Last active
March 13, 2021 11:23
-
-
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…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""--------------------------------------------------------------------------------- | |
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