Resumo : neste tutorial você aprenderá como mudar o tema Tkinter de um para outro.
Introdução aos temas Tkinter ttk
No Tkinter, um tema determina a “aparência” de todos os widgets. É uma coleção de estilos para todos os widgets ttk .
Um estilo especifica a aparência de uma classe de widget, por exemplo, um botão. Cada tema vem com um conjunto de estilos. É possível alterar a aparência dos widgets:
- Modificando os estilos integrados
- ou criando novos estilos
Tkinter permite que você altere o tema atual para outro. Quando você altera o tema atual para um novo, o Tkinter aplicará os estilos desse tema a todos os widgets ttk .
Para obter os temas disponíveis, você usa o theme_names()
método da ttk.Style
instância.
Primeiro, crie uma nova instância da ttk.Style
classe:
style = ttk.Style(root)
Linguagem de código: Python ( python )
Segundo, obtenha os temas disponíveis chamando o theme_names()
método:
style.theme_names()
Linguagem de código: Python ( python )
Para obter o tema atual, você usa o theme_use()
método:
current_theme = style.theme_use()
Linguagem de código: Python ( python )
Observe que cada sistema operacional (SO), como Windows, macOS e Linux, vem com seus próprios temas predefinidos. Se você usar os métodos theme_names()
e theme_use()
em sistemas operacionais diferentes, obterá resultados diferentes.
Para alterar o tema atual para um novo, você passa o nome do novo tema para o theme_use()
método:
style.theme_use(theme_name)
Linguagem de código: Python ( python )
O programa a seguir mostra todos os temas do seu sistema e permite alterar um tema para outro:
import tkinter as tk
from tkinter import ttk
class App(tk.Tk):
def __init__(self):
super().__init__()
# root window
self.title('Theme Demo')
self.geometry('400x300')
self.style = ttk.Style(self)
# label
label = ttk.Label(self, text='Name:')
label.grid(column=0, row=0, padx=10, pady=10, sticky='w')
# entry
textbox = ttk.Entry(self)
textbox.grid(column=1, row=0, padx=10, pady=10, sticky='w')
# button
btn = ttk.Button(self, text='Show')
btn.grid(column=2, row=0, padx=10, pady=10, sticky='w')
# radio button
self.selected_theme = tk.StringVar()
theme_frame = ttk.LabelFrame(self, text='Themes')
theme_frame.grid(padx=10, pady=10, ipadx=20, ipady=20, sticky='w')
for theme_name in self.style.theme_names():
rb = ttk.Radiobutton(
theme_frame,
text=theme_name,
value=theme_name,
variable=self.selected_theme,
command=self.change_theme)
rb.pack(expand=True, fill='both')
def change_theme(self):
self.style.theme_use(self.selected_theme.get())
if __name__ == "__main__":
app = App()
app.mainloop()
Linguagem de código: Python ( python )
Neste exemplo, quando você seleciona um tema na lista de botões de opção , o change_theme()
método aplicará o tema selecionado.
Se você executar o programa no Windows 10, verá a seguinte janela:
Se você alterar o tema para clássico, verá o estilo dos widgets ( Label , Entry , Button , LabelFrame e Radio Button ) mudar para o seguinte:
Resumo
- Crie uma instância da
ttk.Style
classe para acessar o banco de dados de estilos. - Use o
style.theme_names()
método para obter temas disponíveis no sistema operacional no qual o aplicativo Tkinter está sendo executado. - Use o
style.theme_use()
método para alterar o tema atual para um novo.