1. Checkboxy (Checkbutton)
Checkbox to kwadratowy przycisk, który może być zaznaczony lub odznaczony. Jest przydatny, gdy trzeba dać użytkownikowi możliwość wyboru jednego lub kilku parametrów spośród dostępnych.
Tworzenie checkboxa
Aby utworzyć checkbox użyj widżetu Checkbutton. Do śledzenia stanu checkboxa (zaznaczony czy nie) zwykle używamy zmiennej typu IntVar, która przechowuje wartość 1 w przypadku zaznaczenia i 0 w przypadku odznaczenia.
import tkinter as tk
# Funkcja do sprawdzania stanu checkboxa
def show_status():
print("Włączony" if var.get() == 1 else "Wyłączony")
# Tworzenie okna
root = tk.Tk()
root.title("Przykład z checkboxem")
# Zmienna przechowująca stan
var = tk.IntVar()
# Checkbox powiązany ze zmienną var
checkbox = tk.Checkbutton(root, text="Włącz opcję", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
Wyjaśnienie kodu
-
variable=var: Powiązuje checkbox ze zmiennąvar, która jest aktualizowana przy każdej zmianie stanu checkboxa. - Funkcja
show_status(): Wypisuje w konsoli bieżący stan checkboxa. Jeśli checkbox jest zaznaczony, wypisuje "Włączony", w przeciwnym razie — "Wyłączony".
Używanie wielu checkboxów
Jeśli potrzebujesz kilku niezależnych opcji, możesz utworzyć kilka checkboxów, z których każdy będzie powiązany z własną zmienną.
# Zmienne do przechowywania stanu
option1 = tk.IntVar()
option2 = tk.IntVar()
# Checkboxy
check1 = tk.Checkbutton(root, text="Opcja 1", variable=option1)
check2 = tk.Checkbutton(root, text="Opcja 2", variable=option2)
check1.pack()
check2.pack()
2. Radiobuttony (Radiobutton)
Radiobuttony to zestaw okrągłych przycisków, z których użytkownik może wybrać tylko jeden. Są przydatne, gdy chcemy dać użytkownikowi możliwość wyboru jednej opcji spośród kilku.
Tworzenie radiobuttonów
Aby utworzyć radiobutton używamy widżetu Radiobutton. Aby powiązać radiobuttony i uczynić ich wybór wzajemnie zależnym, wszystkie muszą być przypisane do jednej zmiennej (IntVar lub StringVar).
# Funkcja do wyświetlania wybranej opcji
def show_choice():
print(f"Wybrano opcję {choice.get()}")
# Zmienna do śledzenia wyboru
choice = tk.IntVar()
# Radiobuttony
radio1 = tk.Radiobutton(root, text="Opcja 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Opcja 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Opcja 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
Wyjaśnienie kodu
-
variable=choice: Przypisuje wszystkie radiobuttony do jednej zmiennejchoice, aby były od siebie zależne. -
value: Określa wartość, jaką zmiennachoiceprzyjmie, gdy użytkownik wybierze ten radiobutton. - Funkcja
show_choice(): Wyświetla w konsoli wybraną opcję.
Radiobuttony z wartościami tekstowymi
Radiobuttony można również przypisać do zmiennej typu StringVar, aby używać wartości tekstowych.
# Zmienna dla wyboru tekstowego
color_choice = tk.StringVar()
# Radiobuttony z wartościami tekstowymi
radio_red = tk.Radiobutton(root, text="Czerwony", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="Niebieski", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="Zielony", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. Spinboxy (Spinbox)
Spinboxy pozwalają użytkownikowi na wybór wartości liczbowej z zakresu. Ten widżet jest przydatny do wprowadzania danych liczbowych takich jak wiek czy ilość.
Tworzenie spinboxa
W Tkinter spinbox tworzy się za pomocą widżetu Spinbox, który pozwala użytkownikowi wpisać wartość ręcznie lub wybrać ją za pomocą strzałek.
# Funkcja do wyświetlania wybranej wartości
def show_spin_value():
print(f"Wartość: {spin.get()}")
# Spinbox od 1 do 10
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
Wyjaśnienie kodu
from_ito: Określają zakres wartości dla spinboxa.- Funkcja
show_spin_value(): Wyświetla wybraną wartość w konsoli przy każdej zmianie.
Konfigurowanie kroku i wartości
Parametr increment pozwala ustawić krok spinboxa, a parametr values umożliwia wskazanie konkretnych wartości.
# Spinbox z wartościami co 2
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# Spinbox z określonymi wartościami
spin_values = tk.Spinbox(root, values=("Mały", "Średni", "Duży"))
spin_values.pack(pady=5)
GO TO FULL VERSION