Chapter 11. Frame, MainWindow,and Toplevel Widgets
Frames and Toplevels are both designed specifically to be containers of other widgets. They differ in two ways: in their default settings and in their relationships to other widgets. A Frame, by default, has no visible border, relief, or anything to indicate that it’s there, whereas all Toplevel widgets have decoration that is consistent with the system on which your application is run. Also, a Toplevel can be manipulated independently of other Toplevel widgets within the application, whereas a Frame always requires a parent (a Toplevel or another Frame) to reside in. It can’t be independent.
We have
already seen many examples using Toplevel widgets. The widget created
by calling MainWindow->new
is actually a
Toplevel widget. If you print the variable, you see something like
this:
print "$mw\n"; # prints: MainWindow=HASH(0x909a2d0)
This window is special because it displays itself automatically when
you call MainLoop
. In every other respect, that
MainWindow widget is a Toplevel. By creating a Toplevel widget, you
are creating another window as part of your application. Other
Toplevel widgets in your program must be displayed explicitly
somewhere in the code.
When to use an additional Toplevel is a design decision that you’ll have to make. You should use another Toplevel widget instead of the MainWindow if there is too much information to fit in one window. Using Toplevels to group information is also sometimes a good idea. You ...
Get Mastering Perl/Tk now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.