Am 22.06.16 um 23:18 schrieb Zachary Ware:
On Wed, Jun 22, 2016 at 4:05 PM, Christian Gollwitzer <aurio...@gmx.de> wrote:
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

There are constants in tkinter for this: NSEW, NS, NE, NW, SE, SW, and EW.

Yes, but this means that not only the combinations with three are missing (NEW = stretch left-right and align at the top etc.), but also you need to remember the exact order that the author of Tkinter has set.

I'm still thinking that passing a string is more in the spirit of Tk; do sticky='snew' or sticky='news' if you wish, which actually works. Plus you save the module prefix (unless you do "from tkinter import *"). I'm not getting the rationale behind these constants. Why should I do side=Tk.LEFT instead of side='left' ?

There are more points where Tkinter feels clunky compared to Tk in Tcl. For instance, gridding widgets with row and columnspan options can be done in Tcl in ASCII-art using -, x and ^ to indicate extensions:

grid .a   -
grid .b   .c
grid  ^   x

This defines a 3x2 grid where .a extends to the right (columnspan=2), .b extends downwards (rowspan =2), and the bottom right place is empty. The same thing in Python requires to do explicit row/column-counting

a.grid(row=0, column=0, columnspan=2)
b.grid(row=1, column=0, rowspan=2)
c.grid(row=1, column=1)


This gets increasingly uglier with the number of widgets in a frame.
If grid were a standalone function, as it is in Tk, it would not be difficult to provide something similar to the Tcl code. For whatever reason it was decided that it should be a method of the widgets to be placed and thus accepts only a single widget.

        Christian
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to