Tkinter: Do you really need a "root"?

Russell E. Owen no at spam.invalid
Mon Jun 9 23:13:40 CEST 2003

In article <c281f461.0306071450.553776ea at>,
 bobsmith327 at (Bob Smith) wrote:

>Hi.  I'm just starting to learn to use the Tkinter module for creating
>GUIs.  I'm using a tutorial that gives a basic starting program of:
>from Tkinter import *
>root = Tk()
>app = Frame(root)
>But do I really need root?...

In general, I suggest you always specify the master when you create a 
widget or a new widget class (such as the example below). That way your 
widgets act just like Tkinter widgets: they can be put into any other 
widget or toplevel window. It makes your code maximally flexible and 

If you explicitly create a root then you are all set to specify it as 
the master of whatever you want to put into the root window. Then if you 
change your mind and want to put those widgets into some other container 
(such as a different toplevel window or a frame or...) you are all set.

A typical GUI application will an extensive hierarchy of widgets 
containing other widgets -- including multiple windows (Toplevel 

The following is typical code for creating your own widget class that 
acts much like a Tkinter widget:

class MyFancyWdg(Tkinter.Frame):
  def __init__(self, master):
    # my master is whatever the user specified

    # any widgets I create to put inside myself
    # should use me (self) as the master
    self.somewdg = Tkinter.Label(self, ...)
    self.someotherwidg = Tkinter.Text(self, ...)

-- Russell

More information about the Python-list mailing list