https://docs.python.org/3/library/tkinter.html
https://realpython.com/python-gui-tkinter/
https://tkdocs.com/
Biblioteka 'tkinter' jest dostarczana z Pythonem 3, więc zwykle nie trzeba jej osobno instalować. Jednak czasami, szczególnie pod Windows, biblioteka może być przypadkowo usunięta z listy instalowanych elementów Pythona.
PIP (konto użytkownika lub środowisko wirtualne) pip install tk APT (dla całego komputera) Pakiety Debiana: python-tk, python3-tk, oraz zależności.
Pakiet 'tkinter' jest standardowym interfejsem Pythona do Tcl/Tk GUI toolkit. Tk i tkinter są dostępne na większości platform Uniksowych i na Windows. Samo Tk nie jest częścią Pythona, jest rozwijane w firmie ActiveState.
# Podane polecenie powinno otworzyć okno ukazujące interfejs Tk. $ python2 -m Tkinter # Py2, version 8.6 in Debian 10 $ python3 -m tkinter # Py3, version 8.6 in Debian 10
# Sprawdzenie wersji tkinter w trybie interaktywnym Pythona. #import Tkinter as tk # Py2 import tkinter as tk # Py3 lub Py2 w Debianie tk._test() # otwarcie okna
Tkinter jest lekki i wieloplatformowy (Windows, MacOS, Linux). Jest to faktycznie standardowy GUI framework dla Pythona, choć czasem jest krytykowany za przestarzały wygląd. Przy przejściu z Py2 do Py3 pewne moduły tkinter zmieniły nazwy, przez co zmienił się sposób importu.
import tkinter as tk # Py3 from tkinter import filedialog # Py3, okna dialogowe from tkinter import messagebox # Py3 from tkinter import ttk # themed widgets root = tk.Tk() # ustawienie głównego okna aplikacji root.title("first") # opcjonalny tytuł okna, domyślny tytuł to "tk" #root.configure(width=200, height=100) # optional #root.geometry("200x100") # optional, the same #root.geometry("{}x{}".format(width, height)) #root.geometry("{}x{}+{}+{}".format(width, height, pos_x, pos_y)) #root.resizable(width=False, height=False) # nie można zmieniać rozmiarów okna # Tutaj dodajemy widżety. #label = tk.Label(root, text="Hello", bg="red") label = ttk.Label(root, text="Hello") # themed widgets label.grid() # użycie menedżera geometrii #label.grid(row=0, column=0) # jawnie podane położenie na siatce (lewy górny róg) root.mainloop() # uruchomienie pętli zdarzeń tkinter
Instrukcja 'root.mainloop()' poleca Pythonowi uruchomić 'pętlę zdarzeń' tkinter. Wtedy rozpoczyna się nasłuchiwanie zdarzeń, takich jak naciśnięcia przycisków lub klawiszy klawiatury. Kod następujący po tej instrukcji jest blokowany aż do chwili, kiedy wywołane okno zostaje zamknięte.