Bonjour,
Je suis face à un cas que je ne comprends pas.
Je cherche à afficher une image dans un canevas, le but c'est de faire une petite appli pour ranger mes photos.
Le code ci-dessous fonctionne et affiche bien mon image :
maintenant je voudrais associer l'affichage de l'image à une action d'un bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 from tkinter import * from PIL import Image, ImageFont, ImageDraw, ImageTk fen=Tk() cadre=Canvas(fen,width=640,height=480,bg="black") cadre.pack(side=LEFT) pilImage=Image.open("image.jpg") im=ImageTk.PhotoImage(pilImage) cadre.create_image(320,240,image = im) fen.mainloop()
Je ne comprends ce que vient faire le dictionnaire toto, et pourquoi cela fonctionne avec lui... (je me suis inspiré de posts dans différents forum)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 from tkinter import * from PIL import Image, ImageFont, ImageDraw, ImageTk fen=Tk() toto={} #----------- cette fonction marche, grâce au toto , pourquoi ? def chargerImage(): im=Image.open("image.jpg") im=im.resize((640,480)) photo = ImageTk.PhotoImage(im) toto['img1'] = photo item = cadre.create_image(320,240,image =photo) print("charger image") print(im.format, im.size, im.mode) #im.show() --> montre image dans fenetre independante #----------- cette fonction ne fonctionne pas alors que c'est la même que dans le programme précédent. def chargerImage2(): pilImage=Image.open("image.jpg") im=ImageTk.PhotoImage(pilImage) cadre.create_image(320,240,image = im) cadre=Canvas(fen,width=640,height=480,bg="black") b=Button(fen,text="ON",command=chargerImage) c=Button(fen,text="2",command=chargerImage2) cadre.pack(side=LEFT) b.pack() c.pack() fen.mainloop()
Merci d'avance !
Partager