Afficher une image dans une classe dérivée de Canvas
Bonjours à tous,
J'essaye désespérément des dériver la class Canvas de Tkinter de sorte que le Canvas en question affiche une image donnée
j'ai bien sure regardé ce post dans la FAQ : Comment insérer une image dans un Canvas ? que fonctionne à merveille, tel quel...
...Mais je n'arrive pas à l'intégrer dans ma classe dérivée DisplayWorld!!:aie:
Ce code ne fonctionne pas :( :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| from PIL import Image, ImageTk
import Tkinter as Tk
class DisplayWorld(Tk.Canvas):
def __init__(self, world):
Tk.Canvas.__init__(self)
self.configure( width=world.size[0], height=world.size[1] )
photo = ImageTk.PhotoImage(world)
self.create_image(0,0, anchor = Tk.NW, image=photo)
world_map = Image.open( 'map.jpg' )
wind = DisplayWorld(world_map)
wind.mainloop() |
Comment faire pour afficher l'image map.jpg en fond de mon DisplayWorld ?
Merci
Je progresse mais c'est pas encore ça!!!
Je renonce à dériver de Canvas, je dérive maintenat de Tk.
Ce code m'affiche bien une fenêtre aux dimensions de mon image, mais l'image n'apparait toujours pas :cry::cry::cry:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class DisplayWorld(Tk.Tk):
def __init__(self):
Tk.Tk.__init__(self)# constructeur de la classe parente
# Image de fond
image = Image.open( 'map.jpg' )
photo = ImageTk.PhotoImage(image)
self.can = Tk.Canvas(self, width = image.size[0], height = image.size[1])
self.can.create_image(0,0, anchor = Tk.NW, image=photo)
self.can.pack(side =Tk.LEFT)
# Test code :
if __name__ == '__main__':
wind = DisplayWorld()
wind.mainloop() |
Pourquoi l'image image n'apparait pas???
Ca marche!! Mais pourquoi?
J'ai finalement réussi à faire un code qui fonctionne! Parcontre, je ne comprend pas pourquoi celui-ci marche et pas le précédent!!
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
| from PIL import Image, ImageTk
import Tkinter as Tk
class DisplayWorld(Tk.Tk):
def __init__(self, world_map ):
Tk.Tk.__init__(self)# constructeur de la classe parente
self.map = world_map
# Image de fond
self.photo = ImageTk.PhotoImage(self.map)
self.can = Tk.Canvas(self, width = self.map.size[0], height = self.map.size[1])
self.can.pack(side =Tk.LEFT)
# Dessine tout
self.plot_all()
def plot_all(self):
self.can.delete(Tk.ALL)
# Affiche image
self.can.create_image(0,0, anchor = Tk.NW, image=self.photo)
world_map = Image.open( 'map.jpg' )
wind = DisplayWorld(world_map)
wind.mainloop() |
Si quelqu'un a une explication...
Merci