Bonjour,
Je suis débutant sur python et avec canvas.
Je cherche à faire un programme qui lorsque je clique sur mon bouton, lance la def correspondante, et dans la def, je lui dit de placer une image dans mon canvas.
Cela fonctionne lorsque le code n'est pas dans la def, l'image est donc affichée par défaut au lancement de la fenêtre Tkinter :
En revanche quand je fais l'appel par le bouton et la def preview, l'image ne s'affiche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 imagedef = Image.open("/home/pi/Documents/Ressources/preview.jpg") resolution=(400,310) photodef = ImageTk.PhotoImage(imagedef.resize(resolution)) canvas = Canvas(framepreview, width = 450, height = 350, bg='grey28') canvas.create_image(26,20, anchor = NW, image=photodef) canvas.create_text(220,175, text='Zone de prévisualisation', fill='white', font=("Arial", 15)) canvas.grid()
Ces deux définitions sont appelées par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def preview(): canvas.delete("all") image = Image.open("/home/pi/Desktop/photo.jpg") resolution=(400,310) photo = ImageTk.PhotoImage(image.resize(resolution)) canvas.create_image(26,20, anchor = NW, image=photo) canvas.create_text(120,120, text="ce texte s'affiche") def stoppreview(): canvas.delete("all") canvas.create_text(220,175, text='Zone de prévisualisation', fill='white', font=("Arial", 15))
Ce que je trouve vraiment étrange, c'est que la def preview se fait bien puisque le texte s'affiche. Mais l'image non, et pas de message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 btnpreview = Button(framepreview, text ='Previsualiser', command = preview).grid() btnstoppreview = Button(framepreview, text ='Stop previsualiser', command = stoppreview).grid()
Je ne vois pas d'où cela vient.
Merci de votre aide
Partager