Níže je příklad, který ukazuje, jak se propojí kliknutí na tlačítko (které nastaví hodnotu a pastelové barvy) a pohyb posuvníku (který nastaví syté barvy) pomocí sdílené proměnné. Klíčové je, že obě funkce pracují se stejnou proměnnou (např. self.slider_var) – když se kliknutím nastaví nová hodnota, funkce pro tlačítko (toggle_update_feeling_button) zavolá self.slider_var.set(nová_hodnota) a při pohybu posuvníku se slider_update_feeling_button spustí a přečte tu hodnotu, aby nastavila barvy tlačítka.
Níže je úryvek kódu, který demonstruje tuto propojení:
def toggle_feeling(self):
"""Při kliknutí na tlačítko cyklí hodnoty podle seznamu a nastaví pastelové barvy.
Zároveň se nastaví hodnota posuvníku."""
states = [0, 2, 5, 7, 9]
current = self.feeling_var.get()
new_index = (states.index(current) + 1) % len(states)
new_state = states[new_index]
self.feeling_var.set(new_state)
# Aktualizace tlačítka pomocí pastelových barev:
self.toggle_update_feeling_button()
# Synchronizace posuvníku s novou hodnotou:
self.slider_var.set(new_state)
def toggle_update_feeling_button(self, value=None):
"""Aktualizuje barvu tlačítka podle aktuální hodnoty feeling_var pomocí pastelových odstínů."""
feeling_value = self.feeling_var.get()
pastel_light = self.pastel_colors_light.get(feeling_value, "#A8E6A3")
pastel_dark = self.pastel_colors_dark.get(feeling_value, "#658A62")
# Nastaví pastelové barvy na tlačítko (barva textu = světlá, pozadí = tmavá)
self.feeling_button.config(bg=pastel_dark,
fg=pastel_light,
activebackground=pastel_light,
activeforeground=pastel_dark)
def slider_update_feeling_button(self, value=None):
"""Při pohybu posuvníku aktualizuje tlačítko na syté barvy.
Čte hodnotu posuvníku (self.slider_var) a nastaví barvy dle slovníků self.colors a self.colors_dark."""
slider_value = self.slider_var.get() # Hodnota posuvníku (0-10)
color_light = self.colors.get(slider_value, "#FFFFFF")
color_dark = self.colors_dark.get(slider_value, "#000000")
self.feeling_button.config(bg=color_dark,
fg=color_light,
activebackground=color_light,
activeforeground=color_dark)
Jak to funguje:
-
Kliknutí na tlačítko:
Funkcetoggle_feeling
cyklí hodnoty v seznamu[0, 2, 5, 7, 9]
a nastaví novou hodnotu doself.feeling_var
. Následně zavolátoggle_update_feeling_button
, která nastaví pastelové barvy tlačítka. Kromě toho se také zavoláself.slider_var.set(new_state)
, čímž se synchronizuje hodnota posuvníku. -
Pohyb posuvníku:
Při pohybu posuvníku se spustí funkceslider_update_feeling_button
(protože je uvedena jako command u posuvníku). Ta přečte aktuální hodnotu zself.slider_var
a nastaví syté barvy tlačítka podle slovníkůself.colors
aself.colors_dark
.
Tímto způsobem se propojí obě funkce – změna stavu tlačítka i změna posuvníku pracují se stejnou hodnotou, takže barvy se aktualizují podle toho, zda byla změněna pomocí kliknutí (pastelové barvy) nebo pohybem posuvníku (syté barvy).
Důležité body:
- Ujisti se, že pro tlačítko i posuvník používáš stejnou proměnnou (např.
self.feeling_var
aself.slider_var
) a že jejich hodnoty jsou synchronizovány. - V případě více emocí (každé s vlastním tlačítkem a posuvníkem) musíš mít mechanismus, který aktualizuje správné widgety. V tvém kódu to řešíš například ve funkci
emotion_slider_update
, kde procházíš widgety podle názvu emoce.
Pokud potřebuješ, aby toto propojení bylo provedeno pro každou emoci zvlášť, ujisti se, že každé tlačítko a posuvník mají své vlastní proměnné, a synchronizaci řeš ve smyčce, která prochází všechny emoce.
Dej vědět, jestli tento přístup odpovídá tvému zadání nebo jestli je třeba ještě něco doladit!
Žádné komentáře:
Okomentovat