Problème affichage image Tkinter

Fermé
GameKnight - 25 juil. 2021 à 13:28
 GameKnight - 25 juil. 2021 à 21:10
Bonjour,
Je suis actuellement sur un gros projet en programmation. Il s'agit d'un jeu en 2D de type rpg. J'avançais bien, mais depuis 3 jours, je me heurte à un problème déroutant. Cela fait bientôt 5 ans que je code en python, mais je dois avouer que ce problème est de loin le plus étrange auquel j'ai été confronté.
Mon programme est censé afficher la photo de profil du joueur dans la zone de customisation de personnage. Comme vous pouvez le voir dans le code ci-dessous, l'image correspondante est définie, puis passé en paramètre image dans un Label. Le label s'affiche bien, mais pas l'image. De plus, aucun message d'erreur n'est renvoyé.
J'ai fait beaucoup de test pour localiser l'origine du problème, et il semblerait qu'il vienne de la définition de l'image elle même. En effet, lorsque je rentre un chemin d'accès inexistant ou eroné, je n'ai aucun message d'erreur à l'ouverture du programme.

Voici donc l'extrait de mon code impliqué :
from Tkinter import *
from functools import partial
avt_dict = {}
j1="Random"
avt_dict[j1] = "Human2"
#normalement, ces données sont dans des fichier de sauvegarde, et non prédéfinies dans le code comme dans cet exemple.
gifsdict = {}


game_window = Tk()
game_window.title("Sword World")

game_frame = Frame(game_window, bd=1, bg='black', relief='solid')
game_frame.grid(column=0, row=0)

def Interface_Personnage () :
#Fonction d'affichage de l'interface de personnage
    global avt_dict, j1

    game_frame.grid_forget()
    pers_frame.grid(column=0, row=0)

    if avt_dict[j1] == "BOT" :
        pht_profil_lbl1.grid(column=0, row=0, rowspan=3)
    elif avt_dict[j1] == "Human1" :
        pht_profil_lbl2.grid(column=0, row=0, rowspan=3)
    elif avt_dict[j1] == "HumanGirl1" :
        pht_profil_lbl3.grid(column=0, row=0, rowspan=3)
    elif avt_dict[j1] == "Human2" :
        pht_profil_lbl4.grid(column=0, row=0, rowspan=3)
    elif avt_dict[j1] == "HumanGirl2" :
        pht_profil_lbl5.grid(column=0, row=0, rowspan=3)
    elif avt_dict[j1] == "Ninja" :
        pht_profil_lbl6.grid(column=0, row=0, rowspan=3)
    elif avt_dict[j1] == "NinjaGirl" :
        pht_profil_lbl7.grid(column=0, row=0, rowspan=3)

Menu1_Personnage_file="C:\Users\Administrateur\Desktop\Sword World\Images\Menus\Menu1-Personnage.gif"
Menu1_Personnage_img = PhotoImage(file = Menu1_Personnage_file)
gifsdict[Menu1_Personnage_file] = Menu1_Personnage_img

pht_Menu1_Personnage = Button(game_frame, image=Menu1_Personnage_img, bg='black', command=partial(Interface_Personnage))
#cette image est affichée corectement

pht_Menu1_Personnage.grid(column=0, row=0)




pers_frame = Frame(game_window, bd=1, bg='black', relief='solid')



pht_BOT_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_Bot.gif"
pht_BOT_img = PhotoImage(pht_BOT_file)
gifsdict[pht_BOT_file] = pht_BOT_img

pht_Human1_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_Human1.gif"
pht_Human1_img = PhotoImage(pht_Human1_file)
gifsdict[pht_Human1_file] = pht_Human1_img

pht_HumanGirl1_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_HumanGirl1.gif"
pht_HumanGirl1_img = PhotoImage(pht_HumanGirl1_file)
gifsdict[pht_HumanGirl1_file] = pht_HumanGirl1_img

pht_Human2_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_Human2.gif"
pht_Human2_img = PhotoImage(pht_Human2_file)
gifsdict[pht_Human2_file] = pht_Human2_img

pht_HumanGirl2_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_HumanGirl2.gif"
pht_HumanGirl2_img = PhotoImage(pht_HumanGirl2_file)
gifsdict[pht_HumanGirl2_file] = pht_HumanGirl2_img

pht_Ninja_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_Ninja.gif"
pht_Ninja_img = PhotoImage(pht_Ninja_file)
gifsdict[pht_Ninja_file] = pht_Ninja_img

pht_NinjaGirl_file="C:\Users\Administrateur\Desktop\Sword World\Images\Photo_Profil\Pht_Profil_NinjaGirl.gif"
pht_NinjaGirl_img = PhotoImage(pht_NinjaGirl_file)
gifsdict[pht_NinjaGirl_file] = pht_NinjaGirl_img


pht_profil_lbl1 = Label(pers_frame, image=pht_BOT_img, bg='black')
pht_profil_lbl2 = Label(pers_frame, image=pht_Human1_img, bg='black')
pht_profil_lbl3 = Label(pers_frame, image=pht_HumanGirl1_img, bg='black')
pht_profil_lbl4 = Label(pers_frame, image=pht_Human2_img, bg='black')
pht_profil_lbl5 = Label(pers_frame, image=pht_HumanGirl2_img, bg='black')
pht_profil_lbl6 = Label(pers_frame, image=pht_Ninja_img, bg='black')
pht_profil_lbl7 = Label(pers_frame, image=pht_NinjaGirl_img, bg='black')




game_window.mainloop()


Voila voila. Merci d'avance pour votre aide !

Configuration: Windows / Firefox 52.0
A voir également:

4 réponses

Bonjour, il faut lui dire que c'est le file à lire, car c'est un paramètre nommé.

Pour le premier alors
pht_BOT_img = PhotoImage(file=pht_BOT_file)


À faire aussi pour tous les autres PhotoImage =)
1
yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024 Ambassadeur 1 551
25 juil. 2021 à 13:54
bonjour, ton code n'utilise pas les images.
0
C'est à dire ?
0
Aie... La je me sent bête... C'était évident en plus. Comme on dit, c'est souvent les erreurs les plus simples qui sont les plus dures à trouver...

En tout cas, merci beaucoup et bonne soirée !
0