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 aliastk
aby było mniej pisania. - stworzenie głównego okna
Tkinter.Tk()
- często "zwyczajowo" przypisywane do zmiennejmaster
lubroot
. - uruchomienie funkcji
mainloop()
- czyligłó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()
Buy a Coffee