[tkinter] widget size adjustment
Christian Gollwitzer
auriocus at gmx.de
Wed Jun 22 17:05:39 EDT 2016
Am 22.06.16 um 22:53 schrieb Pierre-Alain Dorange:
> Christian Gollwitzer <auriocus at gmx.de> wrote:
>> If you do not see the background, then indeed the canvas is not resized,
>> which means the gridding options are wrong. Looking at your code, I see
>> this:
>>
>> self.map.grid(row=1,column=1,rowspan=4,columnspan=2,padx=2,pady=2)
>>
>> Here, you do not specify any sticky options, which means it should
>> default to centering. Try adding NSEW sticky options.
>
> That's magic !
> It works just fine...
:)
> If i do understand NSEW sticky option make the widget autoadjust to the
> available space. The default option is just CENTERED... I do not explore
> this, i just thought NSEW was also CENTERED.
IMHO the sticky options in grid are actually very intuitive, once you
understand them. The widget gets "pinned" on each side that is mentioned
in the sticky set. If it is not pinned in one direction, then it is
centered. So, for instance sticky=N means pin it on top (North), but
neither south, east nor west. This means, the widget is aligned to the
top of the cell and centered in left-right direction, but does not
resize. Whereas, sticky=NS means pin it north and south, which is
stretching in vertical direction to fill the height, center in
left-right. sticky=NSEW pins it at all four sides which consequently
stretches it in both directions.
BTW, the Tkinter wrapper is a bit clumsy for this option. In the
original Tk, the sticky option is just a string. You can still pass that
and do
sticky='nsew'
instead of the clumsy
sticky=Tkinter.N+Tkinter.S+Tkinter.E+Tkinter.W
Christian
More information about the Python-list
mailing list