1

Тема: Tkinter і зміна налаштувань теми оформлення

У Tkinter є вбудовані теми оформлення,
якщо змінити тему в налаштуваннях програми,
то потрібно перезавантажити програму, щоб така зміна відбулася.
Питання: чи можна в Tkinter робити це «на льоту» без перезавантаження програми,
просто перемалювавши root-вікно й все, що в ньому?

2

Re: Tkinter і зміна налаштувань теми оформлення

import time
import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
s = ttk.Style()

s.theme_use('clam')

time.sleep(5)

s.theme_use('default')
root.update()

спробуйте

Подякували: Teg Miles1

3

Re: Tkinter і зміна налаштувань теми оформлення

Firefox is dead написав:
import time
import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
s = ttk.Style()

s.theme_use('clam')

time.sleep(5)

s.theme_use('default')
root.update()

спробуйте

Надто небезпечний підхід (я про використання методу update).
Є ризик нарватися на незрозумілі баги.
Наприклад, множинне виконання mainloop при роботі з класами.
Знайшов набагато безпечніший та якісніший підхід,
а саме використання в налаштуваннях StringVar, IntVar і т.д.
з прив'язкою до .trace_add('write', функція),
а вже всередині цієї функції наново викликаються класи
відповідальні за необхідний зовнішній вигляд і
використовується метод .configure() для кольорів
і метод .theme_use() для тем. Configure лише для віджетів,
які не підтримуються ttk.Style, бо ті, які підтримуються,
знаходяться в окремому класі, що викликається наново.

Подякували: Firefox is dead1