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 aliastkaby było mniej pisania. - stworzenie głównego okna
Tkinter.Tk()- często "zwyczajowo" przypisywane do zmiennejmasterlubroot. - 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()
furas.pl