Najprostszy obiektowy program w Tkinter
We wpisie Najprostszy program w Tkinter pokazałem najprostszy program w wersji funkcyjnej a teraz ten sam w postaci obiektowej.
import Tkinter as tk
class App(tk.Tk):
def run(self):
self.mainloop()
App().run()
Kod zawiera:
* import modułu Tkinter
i nadanie mu aliasu tk
aby było mniej pisania ale żeby wciąż było widać, które elementy użyte w kodzie pochodzą z tego modułu.
* stworzenie klasy dziedziczącej po Tk()
, która to tworzy główne okno
* stworzenie metody run()
, w której wywoływana jest mainloop()
czyli główna pętla
- w ten sposób kod w będzie trochę przypominał to co mamy w PyQt
czy wxPython
Przykład z dodaniem funkcji __init__
import Tkinter as tk
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
# tu beda tworzone inne elementy okna
def run(self):
self.mainloop()
App().run()
Niekiedy są przykłady, które dziedziczą po Frame
co też działa aczkolwiek trzeba wiedzieć, że Frame
to nie okno tylko obiekt, który służy do grupowania kilku widgetów aby potem umieścić go w oknie. Okno może zawierać kilka Frame
i każdy z nich może wykorzystywać inny układ (pack()
lub grid()
). Można też grupować po to aby szybko chować i pokazywać elementy.
Frame
można też wykorzystać poprzez dziedziczenie przy tworzeniu własnego widgetu.
