Search on blog:

Najprostszy program w Tkinter

Poniżej najprostszy przykład programu w Tkinter pod Python 2.7 i 3.x. Dla wersji 3.x wystarczy zamienić nazwę modułu z Tkinter na tkinter (z małej litery).
Program oprócz wyświetlenia okienka nic nie robi ale to jest minimum jakie potrzeba do uruchomienia programu.

from Tkinter import *

Tk().mainloop()

Ponieważ nie jest zalecane importowania z użyciem gwiazdki więc zapiszę to tradycyjnie. Pozwoli to też uwidocznić, które elementy w programie pochodzą z modułu Tkinter

import Tkinter

Tkinter.Tk().mainloop()

Dla dalszych działań zapiszę to trochę inaczej

import Tkinter as tk

master = tk.Tk()
# tutaj beda umieszczone inne instrukcje programu
master.mainloop()

W kodzie następuje

  • import modułu Tkinter - dla wygody nadałem jej alias tk aby było mniej pisania.
  • stworzenie głównego okna Tkinter.Tk() - często "zwyczajowo" przypisywane do zmiennej master lub root.
  • uruchomienie funkcji mainloop() - czyli głównej pętli, która będzie "napędzać" cały program.

W kodzie zaznaczyłem także gdzie przyjdą kolejne instrukcje programu.


mainloop() to pętla, która się wykonuje aż do zamknięcia okna więc linie kodu po tej instrukcji są wykonywane dopiero po wyjściu z programu.

W mainloop() wykonują się w pętli takie rzeczy jak pobieranie informacji o myszy i klawiaturze, przekazywanie tego do obiektów w oknie, obsługa zdarzeń, wywoływanie funkcji przypisanych do menu i przycisków w oknie - tak więc nasze funkcje nie mogą się wykonywać w nieskończoność (nie powinny mieć nieskończonych pętli while True lub używać time.sleep()) bo inaczej reszta zadań nie będzie wykonywanych i okno przestanie reagować czyli potocznie "zawiśnie".

Shelle pythona takie jak IDLE czy DreamPie są napisane w Tkineter więc do swojego działania wywołują mainloop() co sprawia, że nasz kod może zadziałać i bez wykonania mainloop() ale celem jest uruchamianie programu bez użycia IDLE czy DreamPie więc mainloop() musi być w naszym kodzie.


Powyższy kod jest napisany dla Python 2.7 (lub dla 3.x jeśli zmienić Tkinter na tkinter) ale można też wykorzystać try/except do stworzenia wersji działającej zarówno w 2.7 jak i 3.x
Przy okazji przydatne okazuje się użycie aliasu tk.

try:
    import Tkinter as tk  # python 2.7
except:
    import tkinter as tk  # python 3.x

master = tk.Tk()
master.mainloop()
If you like it
Buy a Coffee