Rozdział 17 · Interfejs gry

X/O stylu wizualnego

X i O powinny się różnić na pierwszy rzut oka – i to nie tylko kolorem.

Paleta gier – najpierw widziane, potem numeryczne

Zawodnik X
#5B24F9
Gracz O
#DB2777
Linia Zwycięstwa
#059669
Niedostępne (koniec gry)
#6B6B7D

X – fioletowy (#5B24F9), O — różowy (#DB2777) — te same korporacyjne kolory kursu co wszędzie indziej na stronie. Linia zwycięska jest podświetlona miękkim zielonym tłem, a na końcu gry znaki zmieniają się wyciszony — widget disabled sygnalizuje: „jest coś więcej nie możesz chodzić.”

Dlaczego tutaj używa się klasycznego tk.Button, a nie ttk

Świadomy wybór, a nie „zapominanie o ttk”
Rozdział 16 uczy cię preferować ttk tam, gdzie jest tematyczny odpowiednik (rozdział 16.12). Ale kolorowanie pojedynczej komórki w kolor gracza bezpośrednio przez fg=/bg= dokładnie to, co tk.Button sprawia, że jest proste i przewidywalne, a motyw przewodni ttk zazwyczaj nakłada takie kolory na widżecie przez cały czas ttk.Style(). Rama, status i muzyka są nadal budowane ttk — wybór widgetu był świadomy dla konkretnego zadania, a nie z przyzwyczajenia.
cvet_otmetki.py
MARK_COLOR = {"X": "#5B24F9", "O": "#DB2777"}

btn.config(text=mark, fg=MARK_COLOR.get(mark, "#0D0230"))
Nie tylko kolor, ale także litera i tekst statusu
Zwycięzca jest widoczny nie tylko po zielonym podświetleniu: litery „X”/„O” pozostają na miejscu, a status wyraźnie pisze „Wygrał gracz X!”. To ważna zasada dostępności: nie można polegać tylko na kolorze jako jedynym sygnale.
Praktyka: malarstwo X i O
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →