Création jeu — Interfaces — Python
Firesta
-
viljoyau -
viljoyau -
Bonjour !
Je poste sur le forum à cause d'un problème avec de la programmation Python.
Nous sommes un groupe de 3, en Terminale, et dans le cadre de notre spécialité ISN nous devons finaliser un projet pour le Bac.
Il s'agit d'un mini-jeu adapté d'un roman d'heroic-fantasy. Je me charge des interfaces graphiques et je les ai toutes créées séparément pour m'assurer qu'elles fonctionnent. Ceci étant fait, je désire maintenant les faire communiquer à l'aide de boutons par des commandes appelant des fonctions. L'idée : passer d'une page à une autre en cliquant sur un bouton "Suivant".
Le souci est que j'arrive parfaitement à passer d'une page à une autre... Sauf en terme visuel ! L'image de fond du Canvas de la deuxième page n'apparaît pas, tout comme le design de notre petite mascotte. Pourtant, l'interface isolée s'affiche parfaitement.
Voici mon code :
On m'a conseillé de créer le Canvas "zone1" dans le programme principal et de laisser seulement la ligne de placement dans la fonction ME, mais ça fonctionne encore moins bien. De même que supprimer la première zone (j'utilise l'instruction zone.delete()).
Quelqu'un aurait une solution à mon problème ?
Merci d'avance à tous !
Je poste sur le forum à cause d'un problème avec de la programmation Python.
Nous sommes un groupe de 3, en Terminale, et dans le cadre de notre spécialité ISN nous devons finaliser un projet pour le Bac.
Il s'agit d'un mini-jeu adapté d'un roman d'heroic-fantasy. Je me charge des interfaces graphiques et je les ai toutes créées séparément pour m'assurer qu'elles fonctionnent. Ceci étant fait, je désire maintenant les faire communiquer à l'aide de boutons par des commandes appelant des fonctions. L'idée : passer d'une page à une autre en cliquant sur un bouton "Suivant".
Le souci est que j'arrive parfaitement à passer d'une page à une autre... Sauf en terme visuel ! L'image de fond du Canvas de la deuxième page n'apparaît pas, tout comme le design de notre petite mascotte. Pourtant, l'interface isolée s'affiche parfaitement.
Voici mon code :
#ASSOCIATION DES INTERFACES
#Importation de bibliothèque
from tkinter import *
def ME():
#Définition du canvas et paramètres
zone1=Canvas(fen, bg="yellow", width="800", height="600")
zone1.place(x=0, y=0)
#Récupération et positionnement de l'image dans le canvas
texture1=PhotoImage(file="Fondgif.gif")
zone1.create_image(700,350, image=texture1)
#Ajout de Flammèche
mascotte=PhotoImage(file="flammechetransp.gif")
zone1.create_image(650,475, image=mascotte)
#TEXTES
titre=zone1.create_text(400, 50, fill="black", font="Lemon/Milk", text="EXPLICATIONS")
intr=zone1.create_text(250, 100, fill="black", font="Garamond", text="TEXTE1")
jeu1=zone1.create_text(350, 175, fill="black", font="Garamond", text="TEXTE2")
jeu2=zone1.create_text(260, 270, fill="black", font="Garamond", text="TEXTE3")
#Bouton
suite=Button(fen,text="JOUER !", font="Tahoma")
suite.place(x=150,y=530)
#Création de la fenêtre
fen=Tk()
#Définition des paramètres
fen.geometry("800x600")
fen.title("FRAGEÜZENTA")
fen.resizable(width=False, height=False)
#Définition du canvas et paramètres
zone=Canvas(fen, bg="purple", width="800", height="600")
zone.place(x=0, y=0)
#Récupération et positionnement de l'image dans le canvas
texture=PhotoImage(file="dragonfond.gif")
zone.create_image(100,500, image=texture)
#TEXTES
titre=zone.create_text(150, 50, fill="white", font="Lemon/Milk", text="BIENVENUE !")
intr=zone.create_text(180, 200, fill="white", font="Garamond", text="TEXTE1")
expl=zone.create_text(150, 360, fill="white", font="Garamond", text="TEXTE2")
suite=zone.create_text(90, 450, fill="white", font="Garamond", text="TEXTE3")
#Bouton
suite=Button(fen,text="ACCÈS AU JEU...", font="Tahoma", command=ME)
suite.place(x=100,y=520)
#Lancement de la fenêtre
fen.mainloop()
On m'a conseillé de créer le Canvas "zone1" dans le programme principal et de laisser seulement la ligne de placement dans la fonction ME, mais ça fonctionne encore moins bien. De même que supprimer la première zone (j'utilise l'instruction zone.delete()).
Quelqu'un aurait une solution à mon problème ?
Merci d'avance à tous !
A voir également:
- Création jeu — Interfaces — Python
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
- 94 jeu - Télécharger - Puzzle & Réflexion
1 réponse
Bonjour,
C'est un problème plus que rencontré avec tkinter, cela provient du fait qu"à la sortie de ta fonction tes variables texture1 et mascotte sont détruites et que donc les références à tes images n'existent plus.
Pour résoudre cela, tu peux soit enregistrer ces références dans une liste définie ou dictionnaire hors de ta fonction.
Soit les enregistrer directement dans le canvas ou autre widget tkinter.
C'est un problème plus que rencontré avec tkinter, cela provient du fait qu"à la sortie de ta fonction tes variables texture1 et mascotte sont détruites et que donc les références à tes images n'existent plus.
Pour résoudre cela, tu peux soit enregistrer ces références dans une liste définie ou dictionnaire hors de ta fonction.
mes_images = {}
def ME() :
#....
mes_images['texture1'] = PhotoImage(file="Fondgif.gif")
zone1.create_image(700,350, image=mes_images['texture1'])
# ....
mes_images['mascotte'] = PhotoImage(file="flammechetransp.gif")
zone1.create_image(650,475, image=mes_images['mascotte'])
# ...
Soit les enregistrer directement dans le canvas ou autre widget tkinter.