Bonjour à tou(te)s,

je me suis fait une petite appli avec Tkinter (grâce à vos réponses d'une précédente discussion) mais je tombe sur un nouveau mystère :

Les Canvas ne semblent pas se dimensionner comme les autres widgets.
Du coup, j'ai fait une version minimaliste de mon appli pour exposer mon mystère.

Voici donc la GUI minimaliste telle que je la veux. Les widgets que j'utilise sont des Labels.
Nom : tk.png
Affichages : 242
Taille : 16,8 Ko

Et voici la même où les Labels sont remplacés par des Canvas.
Nom : tk_2.png
Affichages : 230
Taille : 16,4 Ko
C'est comme si les rowconfigure et columnconfigure n'avaient plus le même effet !

Voici le code qui affiche les GUI ci dessus :
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
import Tkinter
 
def TestGUI ( use_label ):
 
    def make_widget ( x,y,sx,sy,text ):
        color = '#%x%x%x'%( x*5+5,y*5+5,x*3+y*3+9 )
        if use_label :
            res = Tkinter.Label( main,bg=color,text=text )
        else:
            res = Tkinter.Canvas( main,bg=color,highlightthickness=0 )
            res.create_text( 30,10,text=text )
        res.grid( column=x,row=y,columnspan=sx,rowspan=sy,sticky=Tkinter.NSEW )
 
    root = Tkinter.Tk()
    root.geometry('700x500+10+10')
    root.bind('<Escape>',lambda e : root.quit())
    main = Tkinter.Frame( root )
    make_widget( 0,0 , 1,1 , 'zone 1' )
    make_widget( 1,0 , 1,1 , 'zone 2' )
    make_widget( 0,1 , 1,1 , 'zone 3' )
    make_widget( 1,1 , 1,2 , 'zone 4' )
    make_widget( 0,2 , 1,1 , 'zone 5' )
    make_widget( 2,0 , 1,3 , 'zone 6' )
    for i,w in enumerate(( 3,2,1 )) : main.rowconfigure   ( i,weight=w )
    for i,w in enumerate(( 9,3,1 )) : main.columnconfigure( i,weight=w )
    main.pack( fill=Tkinter.BOTH,expand=1 )
    root.focus_force()
    root.mainloop()
    root.destroy()
 
TestGUI( 1 )
TestGUI( 0 )
Lancez là : vous voyez ma GUI telle que je la veux. Les widgets que j'utilise sont des Labels.
Appuyez sur "Escape", et vous voyez la même où les Labels sont remplacés par des Canvas.

Merci de vos conseils !