Lably
Skip to content

Tkinter

Python binding to the Tk GUI toolkit

  • 7 min read
  • 2 chapters

Related on Lably

Through Graphical user interface, Python (programming language) and Microsoft Windows

The name Tkinter comes from Tk interface. Tkinter was written by Steen Lumholt and Guido van Rossum, then later revised by Fredrik Lundh.

Tkinter is free software released under a Python license.

Description

As with most other modern Tk bindings, Tkinter is implemented as a Python wrapper around a complete Tcl interpreter embedded in the Python interpreter. Tkinter calls are translated into Tcl commands, which are fed to this embedded interpreter, thus making it possible to mix Python and Tcl in a single application. The official Python release uses Tcl/Tk 8.6 (rather than the more up-to-date 9.0).

There are several popular GUI library alternatives available, such as Kivy, Pygame, Pyglet, PyGObject, PyQt, PySide, and wxPython.

Definitions

<span id="mwQQ"></span><span class="kn" id="mwQg">from</span><span class="w" id="mwQw"> </span><span class="nn" id="mwRA">tkinter</span><span class="w" id="mwRQ"> </span><span class="kn" id="mwRg">import</span> <span class="o" id="mwRw">*</span> <span class="k" id="mwSA">def</span><span class="w" id="mwSQ"> </span><span class="nf" id="mwSg">calculate</span><span class="p" id="mwSw">():</span> <span class="n" id="mwTA">price</span> <span class="o" id="mwTQ">=</span> <span class="nb" id="mwTg">float</span><span class="p" id="mwTw">(</span><span class="n" id="mwUA">entry_price</span><span class="o" id="mwUQ">.</span><span class="n" id="mwUg">get</span><span class="p" id="mwUw">())</span> <span class="n" id="mwVA">qty</span> <span class="o" id="mwVQ">=</span> <span class="nb" id="mwVg">float</span><span class="p" id="mwVw">(</span><span class="n" id="mwWA">entry_qty</span><span class="o" id="mwWQ">.</span><span class="n" id="mwWg">get</span><span class="p" id="mwWw">())</span> <span class="n" id="mwXA">total</span> <span class="o" id="mwXQ">=</span> <span class="n" id="mwXg">price</span> <span class="o" id="mwXw">*</span> <span class="n" id="mwYA">qty</span> <span class="n" id="mwYQ">label_result</span><span class="o" id="mwYg">.</span><span class="n" id="mwYw">config</span><span class="p" id="mwZA">(</span><span class="n" id="mwZQ">text</span><span class="o" id="mwZg">=</span><span class="s2" id="mwZw">"Total: "</span> <span class="o" id="mwaA">+</span> <span class="nb" id="mwaQ">str</span><span class="p" id="mwag">(</span><span class="n" id="mwaw">total</span><span class="p" id="mwbA">))</span> <span class="n" id="mwbQ">app</span> <span class="o" id="mwbg">=</span> <span class="n" id="mwbw">Tk</span><span class="p" id="mwcA">()</span> <span class="n" id="mwcQ">app</span><span class="o" id="mwcg">.</span><span class="n" id="mwcw">title</span><span class="p" id="mwdA">(</span><span class="s2" id="mwdQ">"Facturation App"</span><span class="p" id="mwdg">)</span> <span class="n" id="mwdw">Label</span><span class="p" id="mweA">(</span><span class="n" id="mweQ">app</span><span class="p" id="mweg">,</span> <span class="n" id="mwew">text</span><span class="o" id="mwfA">=</span><span class="s2" id="mwfQ">"Prix"</span><span class="p" id="mwfg">)</span><span class="o" id="mwfw">.</span><span class="n" id="mwgA">pack</span><span class="p" id="mwgQ">()</span> <span class="n" id="mwgg">entry_price</span> <span class="o" id="mwgw">=</span> <span class="n" id="mwhA">Entry</span><span class="p" id="mwhQ">(</span><span class="n" id="mwhg">app</span><span class="p" id="mwhw">)</span> <span class="n" id="mwiA">entry_price</span><span class="o" id="mwiQ">.</span><span class="n" id="mwig">pack</span><span class="p" id="mwiw">()</span> <span class="n" id="mwjA">Label</span><span class="p" id="mwjQ">(</span><span class="n" id="mwjg">app</span><span class="p" id="mwjw">,</span> <span class="n" id="mwkA">text</span><span class="o" id="mwkQ">=</span><span class="s2" id="mwkg">"Quantité"</span><span class="p" id="mwkw">)</span><span class="o" id="mwlA">.</span><span class="n" id="mwlQ">pack</span><span class="p" id="mwlg">()</span> <span class="n" id="mwlw">entry_qty</span> <span class="o" id="mwmA">=</span> <span class="n" id="mwmQ">Entry</span><span class="p" id="mwmg">(</span><span class="n" id="mwmw">app</span><span class="p" id="mwnA">)</span> <span class="n" id="mwnQ">entry_qty</span><span class="o" id="mwng">.</span><span class="n" id="mwnw">pack</span><span class="p" id="mwoA">()</span> <span class="n" id="mwoQ">Button</span><span class="p" id="mwog">(</span><span class="n" id="mwow">app</span><span class="p" id="mwpA">,</span> <span class="n" id="mwpQ">text</span><span class="o" id="mwpg">=</span><span class="s2" id="mwpw">"Calculer"</span><span class="p" id="mwqA">,</span> <span class="n" id="mwqQ">command</span><span class="o" id="mwqg">=</span><span class="n" id="mwqw">calculate</span><span class="p" id="mwrA">)</span><span class="o" id="mwrQ">.</span><span class="n" id="mwrg">pack</span><span class="p" id="mwrw">()</span> <span class="n" id="mwsA">label_result</span> <span class="o" id="mwsQ">=</span> <span class="n" id="mwsg">Label</span><span class="p" id="mwsw">(</span><span class="n" id="mwtA">app</span><span class="p" id="mwtQ">,</span> <span class="n" id="mwtg">text</span><span class="o" id="mwtw">=</span><span class="s2" id="mwuA">""</span><span class="p" id="mwuQ">)</span> <span class="n" id="mwug">label_result</span><span class="o" id="mwuw">.</span><span class="n" id="mwvA">pack</span><span class="p" id="mwvQ">()</span> <span class="n" id="mwvg">app</span><span class="o" id="mwvw">.</span><span class="n" id="mwwA">mainloop</span><span class="p" id="mwwQ">()</span>

Widget

The generic term for any of the building blocks that make up an application in a graphical user interface.

  • Core widgets:
    • Containers:
      • frame
      • labelframe
      • toplevel
      • paned window.
    • Buttons:
      • button
      • radiobutton
      • checkbutton (checkbox)
      • menubutton.
    • Text widgets:
      • label,
      • message
      • text
    • Entry widgets:
      • scale
      • scrollbar
      • listbox
      • slider
      • spinbox
      • entry (singleline)
      • optionmenu
      • text (multiline)
    • Canvas (vector and pixel graphics)

Tkinter provides three modules that allow pop-up dialogs to be displayed: tk.messagebox (confirmation, information, warning and error dialogs), tk.filedialog (single file, multiple file and directory selection dialogs) and tk.colorchooser (colour picker).

Python 2.7 and Python 3.1 incorporate the "themed Tk" ("ttk") functionality of Tk 8.5. This allows Tk widgets to be easily themed to look like the native desktop environment in which the application is running, thereby addressing a long-standing criticism of Tk (and hence of Tkinter). Some widgets are exclusive to ttk, such as the combobox, progressbar, treeview, notebook, separator and sizegrip.

Frame

In Tkinter, the Frame widget is the basic unit of organization for complex layouts. A frame is a rectangular area that can contain other widgets.

Child and parent

When any widget is created, a parent–child relationship is created. For example, if you place a text label inside a frame, the frame is the parent of the label.

Sign in to keep reading

One more chapter is free with a Lably account.

More in Computing and communication