Insérer une image avec Tkinter

Signaler
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020
-
willi_4185
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020
-
Je viens de commencer le Python et j'aimerais savoir comment intégrer une image avec Tkinter
j'ai essayer plusieurs méthode mais aucune n'ont fonctionné

Voici mon code si jamais :

# Coding by Willipro123
import tkinter
from tkinter import Label, Menu, Tk, Checkbutton



# coding:utf-8


# Ici ont viens définir les fonctions principal de notre programme qui nous
# permettront de faire les principaux calcul soit : wallet (Portefeuille) et rps (Donnée entrée par l'utilisateur)

def rps():
    rps = 0

    if __name__ == '__rps__':
        main()


def wallet():
    wallet = 5000

    if __name__ == '__wallet__':
        main()


# Tous les def pour les fonctions
# Options à propos
def propos():
    propos = tkinter.Toplevel(app)
    propos.geometry("240x112")
    propos.title("À propos")
    lb = tkinter.Label(propos, text="""Bienvenue sur mon logiciel de calcul, 
afin que vous puissiez gérer votre argent
Vous pouvez utiliser ce logiciel à des 
fin commerciale, Pour cela il suffit 
de référer la source utiliser 

By William""")
    lb.pack()
    if __name__ == '__propos__':
        main()



def wallet_Menu():
    wallet_Menu = tkinter.Toplevel(app)
    wallet_Menu.geometry("240x140")
    wallet_Menu.title("Wallet_Menu")
    wallet_Menu.resizable(width=False, height=False)
    CH = Checkbutton(wallet_Menu, text="Appuyer ici pour continuer")
    lb = tkinter.Label(wallet_Menu, text="Veuillez entrez vos informations ci-dessous")
    lb2 = tkinter.Label(wallet_Menu, text="Veuillez entrez votre Username : ")
    spr = tkinter.Entry(wallet_Menu, width=24)
    lb3 = tkinter.Label(wallet_Menu, text="Veuillez entrez votre mot de passe : ")
    spr2 = tkinter.Entry(wallet_Menu, width=24, show='*')
    lb.pack()
    lb2.pack()
    spr.pack()
    lb3.pack()
    spr2.pack()
    CH.pack()
    if __name__=='__Wallet_Menu__':
        main()






# retrait
def retrait():
    retrait = tkinter.Toplevel(app)
    retrait.geometry("240x92")
    retrait.title("Retrait")
    lb = tkinter.Label(retrait, text="Entrez le montant que vous souhaitez retirer : ")
    rps = tkinter.Entry(retrait, width=24)
    rps.get()
    lb.pack()
    rps.pack()
    if __name__ == '__retrait__':
        main()


# virement

def virement():
    virement = tkinter.Toplevel(app)
    virement.geometry("240x72")
    virement.title("Virement")
    lb = tkinter.Label(virement, text="Entrez le montant que vous souhaitez virer : ")
    rps = tkinter.Entry(virement, width=24)
    lb.pack()
    rps.pack()
    if __name__ == '__virement__':
        main()


# Ici on vas définir notre fenêtre et les principaux widget :
app = tkinter.Tk()
app.title("Wallet Menu")
mainmenu: Menu = tkinter.Menu(app)
# Ici on vas définir la grandeur de notre fenêtre afin de s'assurer quelle soit bien
# centré par rapport a l'écran

screen_x = int(app.winfo_screenwidth())
screen_y = int(app.winfo_screenheight())
window_x = 480
window_y = 240

posX = (screen_x // 2) - (window_x // 2)
posY = (screen_y // 2) - (window_y // 2)

geo = "{}x{}+{}+{}".format(window_x, window_y, posX, posY)
app.geometry(geo)

#Ici ont viens définir notre background :



# Preminer Menu


first_menu = tkinter.Menu(mainmenu, tearoff=0)
first_menu.add_command(label="Wallet", command=wallet_Menu)
first_menu.add_separator()
first_menu.add_command(label="Virement", command=virement)
first_menu.add_command(label="Retrait", command=retrait)
first_menu.add_separator()
first_menu.add_command(label="Quitter", command=app.quit)

# Second Menu


second_menu = tkinter.Menu(mainmenu, tearoff=0)
second_menu.add_command(label="À propos", command=propos)
second_menu.add_separator()

mainmenu.add_cascade(label="Wallet Option", menu=first_menu)
mainmenu.add_cascade(label="Option", menu=second_menu)

# boucle princiaple

app.config(menu=mainmenu)
app.mainloop()


Merci encore :)

1 réponse

Bonjour,

Où est le code montrant ce que tu as tenté de faire ?
Je ne vois rien dans ce que tu as écrit relatant cela.
willi_4185
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020
2 > trifou
aaaaaa png aussi... mon image était en jpg, Merci j'ai refait la manip fais avant en changant le format pour du png :)

Voici ce que j'essayais de faire et pourtant se ne marche toujours pas :

#Définir le background : 

photo = PhotoImage(file="wallet.png")

canvas = Canvas(fenetre,width=480, height=240)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()


Aussi j'ai eu un mini-problème pour faire une frame, donc je suis quasi sur que le code est bon :

#fênetre princiapl
#Creer la frame d'abonnement à ma chaîne YouTube

frame = Frame(app, bg='#41B77F')
label_sub = Label(frame, text="Bienvenue sur votre wallet personnalisé !", font=('Courrier', 18), bg='#41B77F', fg='white')
label_sub2 = Label(frame, text="Dedevelop by Willi", font=('Courrier', 18), bg='#41B77F', fg='white' )
yt = Button(frame, text="Abonne-toi", font=('Courrier', 18), bg='white', fg='#41B77F')
label_sub.pack()
label_sub2.pack()
yt.pack()
frame.pack(expand=YES)


L'erreur serait au niveau du YES qui ne serait pas défini mais puisque c'est un param ? m'semble que j'ai pas a le définir

Merci encore de ton aide !
> willi_4185
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020

> Voici ce que j'essayais de faire et pourtant se ne marche toujours pas

Une erreur est générée ?
Plus de précisions sur ce que tu obtiens est nécessaire, car sans ça, difficile de t'aider.

> L'erreur serait au niveau du YES qui ne serait pas défini mais puisque c'est un param ? m'semble que j'ai pas a le définir

YES n'est pas une constante de tkinter, expand doit être un booléen.

Tu peux voir cela dans la doc tkinter, ou directement dans un interpréteur python, importer tkinter et faire un simple
help(tkinter.Pack)


expand=bool - expand widget if parent size grows
willi_4185
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020
2 > trifou
ah d'accord merci de l'info,j'ai pourtant vue lors d'un tuto que l'ont pouvait mettre
X.pack(expend=YES)

mais, merci de l'info !

Pour l'erreur générée la voici :

Exception has occurred: NameError
name 'PhotoImage' is not defined
File "C:\Users\willi\Desktop\Dév\Code\Wallet_Menu\Wallet_Menu", line 144, in <module>
photo = PhotoImage(file="ma_photo.png")

Merci encore ! pour ton aide.

Même chose pour le YES :

Exception has occurred: NameError
name 'YES' is not defined
File "C:\Users\willi\Desktop\Dév\Code\Wallet_Menu\Wallet_Menu", line 156, in <module>
frame.pack(expand=YES)
> willi_4185
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020

Bonjour,

Il faut revoir un tuto sur le fonctionnement des import en python.

>>> import tkinter as tk
>>> PhotoImage
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'PhotoImage' is not defined
>>> tk.PhotoImage
<class 'tkinter.PhotoImage'>


Alors qu’évidemment si tu importes tout ce qui concerne tkinter dans l'espace global de ton fichier (ce qui est à éviter).

>>> from tkinter import *
>>> PhotoImage
<class 'tkinter.PhotoImage'>
willi_4185
Messages postés
22
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
31 janvier 2020
2 > trifou
Donc je dois créé une classe avec la photos à l’intérieur de celle-ci ?

Enfin bref voici ce que j'arrive a faire avec ce que j'ai pu trouver sur le web :

#Définir le background : 

photo=PhotoImage(file="wallet.gif")
app.config(width=480, height=240)
fond=Canvas(app, width=480, height=240 )
fond.create_image(0,0,image=photo, anchor=NW)
fond.pack()


Et j'ai toujours ce foutu problème comme quoi le "photoimage" is not defined

Enfin bref

merci encore ! :D