Tkinter Themes

2024. 3. 27. 20:22GUI/tkinter

요약 : 이 튜토리얼에서는 Tkinter 테마를 다른 테마로 변경하는 방법을 배웁니다.

Tkinter ttk 테마 소개

Tkinter에서 테마는 모든 위젯의 "모양과 느낌"을 결정합니다. 모든 ttk 위젯에 대한 스타일 모음입니다.

스타일은 버튼과 같은 위젯 클래스의 모양을 지정합니다. 각 테마에는 일련의 스타일이 제공됩니다. 다음을 통해 위젯의 모양을 변경할 수 있습니다.

  • 내장 스타일 수정
  • 아니면 새로운 스타일을 만들어내거나

Tkinter를 사용하면 현재 테마를 다른 테마로 변경할 수 있습니다. 현재 테마를 새 테마로 변경하면 Tkinter는 해당 테마의 스타일을 모든 ttk 위젯 에 적용합니다 .

사용 가능한 테마를 얻으려면, ttk.Style 인스턴스의 theme_names() 메소드를 사용하십시오.

먼저 ttk.Style 클래스의 새 인스턴스를 만듭니다.

style = ttk.Style(root)

둘째, theme_names() 메소드를 호출하여 사용 가능한 테마를 가져옵니다.

style.theme_names()

현재 테마를 얻으려면 다음 theme_use() 함수를 사용하십시오.

current_theme = style.theme_use()

Windows, macOS, Linux 등 모든 운영 체제(OS)에는 미리 정의된 자체 테마가 있습니다. 다른 OS에서 theme_names() 및 theme_use() 메서드를 사용하면 다른 결과가 나타납니다.

현재 테마를 새 테마로 변경하려면, 새 테마 이름을 theme_use() 메서드에 전달합니다.

style.theme_use(theme_name)

다음 프로그램은 시스템의 모든 테마를 표시하며 한 테마를 다른 테마로 변경할 수 있습니다.

In [ ]:
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()

이 예에서는 라디오 버튼 목록 에서 테마를 선택하면, change_theme() 메서드가 선택한 테마에 적용합니다.

Windows 10에서 프로그램을 실행하면 다음과 같은 창이 나타납니다.

 

 

테마를 클래식으로 변경하면 위젯 스타일(Label, Entry, Button, LabelFrame 및 Radio Button)이 다음과 같이 변경되는 것을 볼 수 있습니다.

 

요약

  • 스타일 데이터베이스에 액세스하려면 ttk.Style 클래스의 인스턴스를 만듭니다.
  • Tkinter 애플리케이션이 실행 중인 운영 체제에서 사용 가능한 테마를 얻으려면 style.theme_names() 메소드를 사용하십시오 .
  • 현재 테마를 새로운 테마로 변경하려면 style.theme_use() 메서드를 사용하세요.

 

'GUI > tkinter' 카테고리의 다른 글

Ttk Elements  (1) 2024.03.29
Ttk Styles  (0) 2024.03.28
Tkinter Example  (0) 2024.03.26
Tkinter OptionMenu  (0) 2024.03.26
Tkinter Menubutton  (0) 2024.03.24