Resumo : neste tutorial, você aprenderá como usar o map()
método ttk Style para alterar dinamicamente a aparência de um widget com base em seu estado específico.
Normalmente, um widget ttk permite alterar sua aparência com base em um estado específico.
A tabela a seguir mostra uma lista de estados de widget e seus significados:
Estado | Significado |
---|---|
active |
O mouse está atualmente dentro do widget. |
alternate |
Ttk reservou este estado para uso do aplicativo. |
background |
O widget está em uma janela que não é a janela de primeiro plano. A janela de primeiro plano é uma janela que recebe entradas do usuário. Este estado é relevante apenas para Windows e macOS. |
disabled |
O widget não responderá a nenhuma ação. |
focus |
O widget atualmente está em foco. |
invalid |
O valor do widget é atualmente inválido. |
pressed |
O widget está sendo clicado ou pressionado, por exemplo, quando um widget de botão é pressionado. |
readonly |
O widget somente leitura evita que você altere seu valor atual, por exemplo, um widget somente leitura Entry não permitirá que você altere seu conteúdo de texto. |
selected |
O widget é selecionado, por exemplo, quando os botões de opção são marcados. |
Para alterar a aparência de um widget dinamicamente, você pode usar o map()
método do objeto Style:
style.map(style_name, query)
Linguagem de código: Python ( python )
O map()
método aceita o primeiro argumento como o nome do estilo, por exemplo, TButton
e TLabel
.
A consulta de argumento é uma lista de argumentos de palavras-chave onde cada chave é uma opção de estilo e os valores são listas de tuplas de (state,value)
.
Por exemplo, o código a seguir altera dinamicamente a cor de primeiro plano de um widget de botão:
import tkinter as tk
from tkinter import ttk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('300x100')
button = ttk.Button(self, text='Save')
button.pack(expand=True)
style = ttk.Style(self)
style.configure('TButton', font=('Helvetica', 16))
style.map('TButton',
foreground=[('pressed', 'blue'),
('active', 'red')])
print(style.layout('TButton'))
if __name__ == "__main__":
app = App()
app.mainloop()
Linguagem de código: Python ( python )
Neste exemplo, quando você move o foco para o botão, a cor do texto muda para vermelho. E quando você clica ou pressiona o botão, a cor do texto fica azul.
Saída:
Resumo
- Use o
style.map()
método para alterar dinamicamente a aparência de um widget com base em seu estado específico.