Affichage d'une image .png
Bonjour,
dans ce premier programme j'affiche correctement les 2 images dans deux Frames différentes.
Code:
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
| from tkinter import *
from PIL import ImageTk, Image
import requests , base64
root=Tk()
trame_1=LabelFrame(root,text='Prévisions 1 ',bg='white',\
labelanchor = NW,height=250,width=700)
trame_1.grid()
Label(trame_1,text='Texte dans la trame 1').grid(column=1)
icon_url = ('http://openweathermap.org/img/wn/04d@4x.png')
im = Image.open(requests.get(icon_url, stream=True).raw)
ph_plus = ImageTk.PhotoImage(im)
pic_label = Label(trame_1,image=ph_plus,bg='white')
pic_label.grid(column=2)
trame_2=LabelFrame(root,text='Prévisions 2 ',bg='white',\
labelanchor = NW,height=250,width=700)
trame_2.grid()
Label(trame_2,text='Texte dans la trame 2').grid(column=1)
icon_url = ('http://openweathermap.org/img/wn/04d@4x.png')
im = Image.open(requests.get(icon_url, stream=True).raw)
ph_plus2 = ImageTk.PhotoImage(im)# le 2 de ph_plus fait la différence !!
pic_label = Label(trame_2,image=ph_plus2,bg='white')
pic_label.grid(column=2)
root.mainloop() |
Je me suis dit que je pourrai optimiser ce bout de programme avec une boucle for :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from tkinter import *
from PIL import ImageTk, Image
import requests , base64
root=Tk()
for i in range(1,3):
trame_i=LabelFrame(root,text=('Prévisions '+str(i)),bg='white',\
labelanchor = NW,height=250,width=700)
trame_i.grid()
Label(trame_i,text='Texte dans la trame '+str(i)).grid(column=1)
icon_url = ('http://openweathermap.org/img/wn/04d@4x.png')
im = Image.open(requests.get(icon_url, stream=True).raw)
ph_plus_i = ImageTk.PhotoImage(im)
pic_label = Label(trame_i,image=ph_plus_i,bg='white')
pic_label.grid(column=2)
root.mainloop() |
Et là, l'icone ne saffiche que dans la deuxième trame!
Pourtant j'ai bien deux images différentes en mémoire:
im: <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=200x200 at 0x25389B12F10>
pyimage1
et
im: <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=200x200 at 0x25389B12F70>
pyimage2
Où est mon erreur?
Merci de votre aide