Python (index)


Wprowadzenie do tkinter

https://docs.python.org/3/library/tkinter.html

https://realpython.com/python-gui-tkinter/

https://tkdocs.com/

INSTALACJA

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.

START

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.