Image de fond tkinter

Fermé
leane_brt Messages postés 1 Date d'inscription mardi 2 avril 2019 Statut Membre Dernière intervention 2 avril 2019 - 2 avril 2019 à 16:39
 figarau - 3 avril 2019 à 09:26
Bonjour,

Pour mon projet d'ISN au bac, nous avons développé un piano tiles. Nous voulons maintenant mettre une image en fond pour donner un petit peu d'entrain à notre projet.

Avec ce code :

myFile = "piano.gif"
myImage = tk.PhotoImage(file=myFile)
label = tk.Label(fen1, image=myImage)
label_window = can1.create_window(5,20, anchor=tk.NW, window=label)

L'image s'affiche. Problème : elle n'est pas en fond. En effet, nous ne savons pas comme la mettre à l'arrière plan et la redimensionner à la taille de la fenêtre.

Merci de votre réponse rapide, le bac c'est bientôt.


Configuration: Windows / Firefox 66.0

1 réponse

Bonjour,

Mettre un fond sur un canvas se fait avec la méthode create_image du canvas, le label est inutile.
Redimensionner une image se fait avec la méthode zoom de PhotoImage, les paramètres de zoom sont le ratio de la largeur et hauteur.

Un petit exemple.
import tkinter as tk

window = tk.Tk()

temp_img = tk.PhotoImage(file='img.png')
zx = int(400 / temp_img.width())
zy = int(300 / temp_img.height())
background_img = temp_img.zoom(zx, zy)

can = tk.Canvas(window, width=400, height=300)
can.pack()

can.create_image(200, 150, image=background_img)

window.mainloop()


Mais ton image risque d'être déformée si le zx et zy ont des valeurs trop éloignées.
Il serait sans doute mieux de faire que ton image de fond soit directement à la dimension de ta fenêtre, le zoom devenant alors inutile.
0