Released in Tkinter is Python's most popular GUI (Graphical User Interface) library. This topic explains proper usage of this library and its features.
The capitalization of the tkinter module is different between Python 2 and 3. For Python 2 use the following:
For Python 3 use the following:
For code that works with both Python 2 and 3, you can either do
See the tkinter Documentation for more details
A minimal tkinter Application
tkinter is a GUI toolkit that provides a wrapper around the Tk/Tcl GUI library and is included with Python. The following code creates a new window using
tkinter and places some text in the window body.
Note: In Python 2, the capitalization may be slightly different, see Remarks section below.
Tkinter has three mechanisms for geometry management:
place manager uses absolute pixel coordinates.
pack manager places widgets into one of 4 sides. New widgets are placed next to existing widgets.
grid manager places widgets into a grid similar to a dynamically resizing spreadsheet.
The most common keyword arguments for
widget.place are as follows:
x, the absolute x-coordinate of the widget
y, the absolute y-coordinate of the widget
height, the absolute height of the widget
width, the absolute width of the widget
A code example using
widget.pack can take the following keyword arguments:
expand, whether or not to fill space left by parent
fill, whether to expand to fill all space (NONE (default), X, Y, or BOTH)
side, the side to pack against (TOP (default), BOTTOM, LEFT, or RIGHT)
The most commonly used keyword arguments of
widget.grid are as follows:
row, the row of the widget (default smallest unoccupied)
rowspan, the number of colums a widget spans (default 1)
column, the column of the widget (default 0)
columnspan, the number of columns a widget spans (default 1)
sticky, where to place widget if the grid cell is larger than it (combination of N,NE,E,SE,S,SW,W,NW)
The rows and columns are zero indexed. Rows increase going down, and columns increase going right.
A code example using
grid within the same frame! Doing so will lead to application deadlock!