How to Change the Appearances of Widgets Dynamically Using Ttk Style map() Method
2024. 3. 30. 18:25ㆍGUI/tkinter
요약 : 이 튜토리얼에서는 ttk Style map() 메소드를 사용하여 특정 상태에 따라 위젯의 모양을 동적으로 변경하는 방법을 배웁니다.
일반적으로 ttk 위젯을 사용 하면 특정 상태에 따라 모양을 변경할 수 있습니다.
다음 표에는 위젯 상태 목록과 그 의미가 나와 있습니다.
상태 의미active | 마우스가 현재 위젯 내에 있습니다. |
alternate | Ttk는 이 상태를 애플리케이션 사용을 위해 예약했습니다. |
background | 위젯이 전경 창이 아닌 창에 있습니다. 전경 창은 사용자 입력을 받는 창입니다. 이 상태는 Windows 및 macOS에만 관련됩니다. |
disabled | 위젯은 어떤 작업에도 응답하지 않습니다. |
focus | 현재 위젯에 포커스가 있습니다. |
invalid | 위젯의 값이 현재 유효하지 않습니다. |
pressed | 위젯이 현재 클릭되거나 눌려지고 있는 중입니다(예: Button 위젯을 눌렀을 때). |
readonly | 읽기 전용 위젯은 현재 값을 변경하는 것을 방지합니다. 예를 들어 읽기 전용 Entry 위젯은 텍스트 내용을 변경하는 것을 허용하지 않습니다. |
selected | 예를 들어 라디오 버튼을 선택한 경우 위젯이 선택됩니다. |
위젯의 모양을 동적으로 변경하려면 map()Style 개체의 메서드를 사용할 수 있습니다.
style.map(style_name, query)
map() 메소드는 첫 번째 인수를 스타일 이름으로 허용합니다(예: TButton 및 TLabel). 인수 쿼리는 각 키가 스타일 옵션이고 값이 (state,value)의 튜플 목록인 키워드 인수 목록입니다.
예를 들어, 다음 코드는 버튼 위젯의 전경색을 동적으로 변경합니다.
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()
이 예에서는 포커스를 버튼으로 이동하면 텍스트 색상이 빨간색으로 변경됩니다. 그리고 버튼을 클릭하거나 누르면 텍스트 색상이 파란색으로 변합니다.
요약
- 특정 상태에 따라 위젯의 모양을 동적으로 변경하려면 style.map() 메서드를 사용하세요.
'GUI > tkinter' 카테고리의 다른 글
How to Schedule an Action with Tkinter after() method (0) | 2024.04.02 |
---|---|
Tkinter Thread (0) | 2024.03.31 |
Ttk Elements (1) | 2024.03.29 |
Ttk Styles (0) | 2024.03.28 |
Tkinter Themes (0) | 2024.03.27 |