Menu

Image de fond tkinter

Messages postés
1
Date d'inscription
mardi 2 avril 2019
Statut
Membre
Dernière intervention
2 avril 2019
- - Dernière réponse :  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
Afficher la suite 

Votre réponse

1 réponse

0
Merci
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.
Commenter la réponse de figarau