Temas Tkinter

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.Styleinstância.

Primeiro, crie uma nova instância da ttk.Styleclasse:

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:

Tema Tkinter

Se você alterar o tema para clássico, verá o estilo dos widgets ( Label , Entry , Button , LabelFrame e Radio Button ) mudar para o seguinte:

Tema ttk

Resumo

  • Crie uma instância da ttk.Styleclasse 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *