Я искал удобный способ окрасить все дочерние виджеты в интерфейсе, установив цвет по умолчанию для корневого экземпляра tkinter.
Я натолкнулся на этот стековый пост и попытался использовать tk_setPalette()
.Однако я понял, что этот метод не работает, если вы используете ttk.widgets .
Существует ли эквивалентный метод ttk для root.tk_setPalette()
?
Вот минимальный, полный и проверяемый пример:
import tkinter as tk
from tkinter import ttk
class Formular(tk.Frame):
def __init__(self,master):
tk.Frame.__init__(self,master)
button = ttk.Button(self,text='Click me!').pack()
class Application:
def __init__(self, master):
self.master = master
self.formular = Formular(self.master).pack()
if __name__ == "__main__":
root = tk.Tk()
root.tk_setPalette(background='#ffffff')
my_gui = Application(root)
root.mainloop()
Если вы измените button = ttk.Button()
наbutton = tk.Button()
все работает нормально, и кнопка будет иметь тот же цвет, что и корневое окно и родительский фрейм.