Tkinter menu crash

Terry Reedy tjreedy at udel.edu
Wed Aug 6 00:13:56 EDT 2014


On 8/5/2014 7:33 PM, Nicholas Cannon wrote:
> I am confused. When I did menu bar.add_cascade why don't I do filemenu.add_cascade. Is it because I am adding a cascade to the main menubar?

Let us start with a widget, that can 'contain' other widgets (and 
possibly other things). We create a child widget (which keeps a 
reference to the parent. Now we want to put it into the parent. How?

The generic grid, pack, and place geometry methods are called on the 
child, with no mention of the parent. (The child reference to the parent 
is used instead.)  Do note, however, that child-independent geometry 
configure methods, like grid rowconfigure, are called on the parent.

Widget-specific geometry methods, however, are (mostly at least) called 
on the parent, with the child passed as a parameter.  Menus can contain 
both commands, which are not widgets, and submenus, which are. They are 
packed with add_command and add_cascade.  Canvases have add methods that 
place items, which again may or may not be widgets.

I initially found child.pack(args) confusing, because I expected the 
pattern to be (child.parent).pack(child, args).  But now that I think 
about it, the shortcut is similar to instance.method(args) sometimes 
meaning (instance.__class__).method(instance, args).  The convenience in 
both cases is about the same.

-- 
Terry Jan Reedy




More information about the Python-list mailing list