Bonjour,
je m'entraine sur petit programme Memory qui fonctionne parfaitement.
Le problème que je rencontre c'est que la page du jeu ne se reconfigure pas automatiquement à la taille du canevas.
Je m'explique:
- si au démarrage on sélectionne 'Grand', puis 'Jeu', on ouvre la page-2 à la bonne taille
- ensuite 'Menu'
- si l'on garde la taille du focus, 'Petit', puis 'Jeu', la page-2 est restée à la taille précédente, et l'on voit le cadre du canevas 'Petit'

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# -*- coding: utf-8 -*- 
 
from tkinter import *
 
def clean_exit():
    root.destroy()
 
def alternate_window(is_in_root, is_in_window, window):
    def alternate_processing():
        if is_in_root and not is_in_window:
            #page Jeu
            root.withdraw()
            window.deiconify()
        else:
            #page Menu
            window.withdraw()
            root.deiconify()
            selection()
    return alternate_processing #??
 
def create_window(window):
    button = Button(window, text="Menu",font='Arial 12', command=alternate_window(False, True, window))
    button.grid(row=5,column=1)
    window.protocol("WM_DELETE_WINDOW", clean_exit)
 
def taille_jeu():
     if rValue.get()==1:
        WIDTH=200
        HEIGHT=200
     elif rValue.get()==2:
        WIDTH=350
        HEIGHT=350
     else:
        WIDTH=500
        HEIGHT=500
     Canvas(page_2,width=WIDTH,height=HEIGHT,bg='red').grid(row=0,columnspan=2)
 
def selection():
    global rValue
    rValue = IntVar()
    rValue.set(1)
    trame2=LabelFrame(root,text='Taille du jeu',padx=50)
    trame2.grid(row=5,columnspan=2,sticky='ew')
    root.grid_columnconfigure(0, weight=1)
    rdio_jeu1 = Radiobutton(trame2,font='Arial 12', text='Petit',
                             variable=rValue, value=1,command=taille_jeu) 
    rdio_jeu2 = Radiobutton(trame2, text='Moyen',font='Arial 12',
                             variable=rValue, value=2,command=taille_jeu) 
    rdio_jeu3 = Radiobutton(trame2,font='Arial 12' ,text='Grand',
                             variable=rValue, value=3,command=taille_jeu)
    rdio_jeu1.grid(column=0, row=6,sticky='w')
    rdio_jeu2.grid(column=0, row=7,sticky='w')
    rdio_jeu3.grid(column=0, row=8,sticky='w')
    taille_jeu()
 
#-----------------Debut du programme------------------    
 
if __name__ == "__main__":
    root=Tk()
    root.geometry("400x200")
    root.title('Menu')
    page_2=Toplevel(root,bg='white',bd=20)
    btn1=Button(root, command=alternate_window(True, False, page_2),font='Arial 12', text="Jeu")
    btn1.grid(column=0, row=9,sticky='we')
    btn2=Button(root,font='Arial 12',text='Quitter',command=root.destroy)
    btn2.grid(column=1, row=9,sticky='we')    
    btn1.columnconfigure(0,weight=1)
    btn2.columnconfigure(1,weight=1)
    create_window(page_2)
    page_2.withdraw()
    page_2.title('Jeu')
 
    selection()#prepare la page avec les focus des radio-boutons initiaux
    root.mainloop()
Question subsidiaire : que retourne la ligne 20 'return alternate_processing' de la fonction 'def alternate_window'
Si je fais un print(return alternate_processing), j'obtiens une seule fois ces messages,
<function alternate_window.<locals>.alternate_processing at 0x0000025FC2585A20>
<function alternate_window.<locals>.alternate_processing at 0x0000025FC2585AB0>
bien que l'on l'utilise à chaque fois que l'on clique sur 'Jeu'

Lorsque tout fonctionnera, j'intégrerai le tout dans des classes pour éviter les variables globales
Merci d'avance pour votre aide
Cordialement