Bonjour,
Je travaille sur un petit exercice mais j'ai des problèmes lorsque je veux actualiser le canvas.
Le code :
Les problèmes :Code:from tkinter import * from time import * from random import randint from math import floor def vitrine() : global obj_1, obj_2, obj_3, obj_4, img_1, img_2, img_3, img_4 liste_objets = [] prix = 0 total = 0 for i in range(4) : n = randint(1, 9) if n not in liste_objets : liste_objets.append(n) fichier = "G:\\Python\\Livre\\Images\\Projet 7\\objet" + str(n) + ".gif" if i == 1 : img_1 = PhotoImage(file = fichier) elif i == 2 : img_2 = PhotoImage(file = fichier) elif i == 3 : img_3 = PhotoImage(file = fichier) else : img_4 = PhotoImage(file = fichier) else : i -= 1 if n == 1 : prix += 120 elif n == 2 : prix += 70 elif n == 3 : prix += 20 elif n == 4 : prix += 40 elif n == 5 : prix += 30 elif n == 6 : prix += 6 elif n == 7 : prix += 70 elif n == 8 : prix += 30 else : prix += 20 canv.itemconfig(obj_1, image = img_1) canv.itemconfig(obj_2, image = img_2) canv.itemconfig(obj_3, image = img_3) canv.itemconfig(obj_4, image = img_4) r = randint(-10, 10) total = floor(prix + r * prix / 100) print(total) # print test return total def actualiser(temps_f, continuer) : global temps_restant, canv if continuer : temps_r = temps_f - time() temps_r_str = str(temps_r) if temps_r >= 10 : canv.itemconfig(temps_restant, text = "Il vous reste " + temps_r_str[:2] + " secondes") else : canv.itemconfig(temps_restant, text = "Il vous reste " + temps_r_str[0] + " secondes") fen.after(1000, lambda : actualiser(temps_f, True)) if temps_f - time() <= 0 : canv.itemconfig(temps_restant, text = "Vous avez perdu !") fen.after(2000, fen.destroy) if temps_r >= 10 : img = PhotoImage(file = "G:\\Python\\Livre\\Images\\Projet 7\\billet" + temps_r_str[:2] + ".gif") if temps_r <= 10 and temps_r >= 0 : img = PhotoImage(file = "G:\\Python\\Livre\\Images\\Projet 7\\billet" + temps_r_str[0] + ".gif") canv.itemconfig(billet, image = img) canv.update() else : fen.after(2000, fen.destroy) def valider(evt) : global entry_prix_vitrine, tot, canv prop = int(entry_prix_vitrine.get()) entry_prix_vitrine.delete(0, END) victoire = False if tot < prop : img_moins = PhotoImage(file = "G:\\Python\\Livre\\Images\\Projet 7\\moins.gif") canv.itemconfig(bonhomme_plus_moins, image = img_moins) print("moins")# print test elif tot > prop : img_plus = PhotoImage(file = "G:\\Python\\Livre\\Images\\Projet 7\\plus.gif") canv.itemconfig(bonhomme_plus_moins, image = img_plus) print("plus") # print test else : img_bravo = PhotoImage(file = "G:\\Python\\Livre\\Images\\Projet 7\\bravo.gif") canv.itemconfig(bonhomme_plus_moins, image = img_bravo) canv.itemconfig(temps_restant, text = "Vous avez gagné !") victoire = True print("gagné") # print test if victoire : actualiser(0, False) canv.update() fen = Tk() fen.title("Le juste prix") fen.geometry("800x550") fen.resizable(width = False, height = False) canv = Canvas(fen, width = 800, height = 800) canv.pack() fond = PhotoImage(file = "G:\\Python\\Livre\\Images\\Projet 7\\fond.gif") canv.create_image(0, 0, image = fond, anchor = 'nw') obj_1 = canv.create_image(300, 100, anchor = 'nw') obj_2 = canv.create_image(550, 100, anchor = 'nw') obj_3 = canv.create_image(300, 300, anchor = 'nw') obj_4 = canv.create_image(550, 300, anchor = 'nw') billet = canv.create_image(10, 70, anchor = 'nw') debut = PhotoImage(file = "G:\\Python\\Livre\Images\\Projet 7\\debut.gif") bonhomme_plus_moins = canv.create_image(10, 200, image = debut, anchor = 'nw') entry_prix_vitrine = Entry(fen, width = 20) entry_prix_vitrine.place(x = 50, y = 40) entry_prix_vitrine.bind('<Return>', valider) entry_prix_vitrine.focus() canv.create_text(40, 15, text = "Entrez le montant de la vitrine :", anchor = 'nw') temps_restant = canv.create_text(50, 65, text = "", anchor = 'nw') temps_fin = time() + 30 tot = vitrine() actualiser(temps_fin, True) fen.mainloop()
L'image du bonhomme_plus_moins disparait quand j'entre une proposition (alors que ça devrait mettre soit un bonhomme qui dit "plus", "moins" ou "gagné"), et l'image des billets qui rétrécissent au fur et à mesure n'apparait pas non plus.
J'ai longtemps cherché comment résoudre le problème, sans succès.
Merci !
-----