Bonsoir, en ce moment je dois travailler sur un jeu sous python utilisant Tkinter.

Le jeu a un menu principal fgmain.py, un menu d'exercices fgMenuPC.py, et un exercice fgExTime.py.
Voilà fgmain raccourci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
from tkinter import*
import fgMenuPC
 
 
def PlayMenuPC():
    '''lance le menu des exercices de physique'''
    fenetre.destroy()
    fgMenuPC.MenuPC()
 
#fenetre
 
#bouton pour lancer le menu des exercices
PCButtPic=PhotoImage(file ="PCButtPic.gif")
PCButt=Button(fenetre, image=PCButtPic,command=PlayMenuPC)
PCButt.place(x=600,y=200)
 
 
fenetre.mainloop()
fgMenuPC raccourci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
from tkinter import*
import fgExTime
 
 
def MenuPC():
    '''Menu des exercices de physique'''
    def PlayExTime():
        fenetre.destroy()
        fgExTime.ExTime()
 
    #fenetre
    #bouton pour lancer l'exercice
    TimeButt=Button(fenetre, text="dilatation du temps",bg="white",command=PlayExTime)
    TimeButt.place(x=650,y=200)
    fenetre.mainloop()
fgExtime très raccourci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
from tkinter import*
import random
 
def ExTime():
    '''exercice '''
    def replay():
        '''relance le jeu'''
    def ExTimeEnd():
        '''fenetre de fin de jeu'''
        ReplayEnd=Button(PopupEnd, text="rejouer",command=replay)
        ReplayEnd.place(x=700,y=350)
    def ExTimeCheck(a,b,c):
        '''verifie les reponses''' 
        ExTimeEnd()
    def ExTimeSpeed():
        '''les reponses'''
        submit=Button(canvas,text="valider",command=lambda r1=answer,r2=TimeM,r3=FrameSpeed:ExTimeCheck(r1,r2,r3))
        submit.place(x=700,y=500)
 
    #Fenetre
 
    #bouton pour commencer le jeu
    play=Button(canvas, text="jouer",command=ExTimeSpeed)
    play.place(x=700,y=420)
 
    fenetre.mainloop()

Si mon jeu s'arrête là, il n'y a pas de problème.

Il apparait quand j'ajoute à la fin de l'exo, un bouton pour retourner au menu principal. Voici les modifications réalisées:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
from tkinter import*
import fgMenuPC
 
def Menu():
    def PlayMenuPC():
        '''lance le menu des exercices de physique'''
        fenetre.destroy()
        fgMenuPC.MenuPC()
    #bouton PC
    PCButtPic=PhotoImage(file ="PCButtPic.gif")
    PCButt=Button(fenetre, image=PCButtPic,command=PlayMenuPC)
    PCButt.place(x=600,y=200)
 
    fenetre.mainloop()
 
Menu()
et :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 
from tkinter import*
import random
import fgmain
 
score=0
Q=10
 
def ExTime():
    '''exercice dilatation du temps'''
 
    def BackMenu():
        '''retourner au menu'''
        global score
        global Q
        score=0
        Q=10
 
        ScoreLab.config(text=["Score:",score])
        QLab.config(text=["Question:",Q])
 
        fenetre.destroy()
 
        fgmain.Menu()
 
    def replay():
 
        ExTime()
 
    def ExTimeEnd():
            ReplayEnd=Button(PopupEnd, text="rejouer",command=replay)
            ReplayEnd.place(x=700,y=350)
 
            ReturnMenuEnd=Button(PopupEnd, text="menu des matieres",command=BackMenu)
            ReturnMenuEnd.place(x=700,y=450)
 
    def ExTimeCheck(a,b,c):
            ExTimeEnd()
 
    def ExTimeSpeed():
        submit=Button(canvas,text="valider",command=lambda r1=answer,r2=TimeM,r3=FrameSpeed:ExTimeCheck(r1,r2,r3))
        submit.place(x=700,y=500)
 
 
    ReturnMenu=Button(canvas, text="menu des matieres",command=BackMenu)
    ReturnMenu.place(x=660,y=450)
 
    answer = DoubleVar()
    play=Button(canvas, text="jouer",command=ExTimeSpeed)
    play.place(x=700,y=420)
 
 
    fenetre.mainloop()
Après avoir écrit les lignes pour que le jeu fasse cela, quand je lance fgmain et que j'appuie sur le bouton qui appelle fgMenuPC:

-AttributeError: module 'fgMenuPC' has no attribute 'MenuPC'

-je ferme donc la fenêtre, mais elle s'ouvre de nouveau automatiquement

-quand je clique de nouveau sur le bouton qui appelle fgMenuPC, tout marche parfaitement.

N.B Désolée, j'ai essayé d'être concise mais le post reste quand même très long. J'espère au moins avoir été clair...