파이썬 (pythoon)

Tkinter ttk style - 테마, 버튼 디자인, 레이블 디자인 외

working for you 2023. 5. 24. 09:29
반응형

Tkinter는 다양한 위젯을 제공하지만, 기본적인 스타일로는 비교적 단조로운 외관을 가지고 있습니다. 다이나믹한 느낌을 주기 위해서는 Tkinter의 ttk(Themed Tkinter) 모듈을 활용하여 버튼 또는 레이블을 예쁘게 설정할 수 있습니다. 예시를 보며 Tkinter ttk style - 테마, 버튼 디자인, 레이블 디자인 까지 같이 공부해 보겠습니다.

 

[목차]
1. Tkinter ttk style theme_us 테마
2. Tkinter ttk style 스타일 변경 configure()
3. Tkinter ttk style 스타일 개별 변경 config()
4. Tkinter ttk style 스타일 적용 예시

 

 

1. Tkinter ttk style theme_us 테마

1) clam 테마

style.theme_use("clam")

Tkinter ttk style 1

 

2) alt 테마

style.theme_use("alt")

Tkinter ttk style 2

 

3) default 테마

style.theme_use("default")

Tkinter ttk style default

 

4) classic 테마

style.theme_use("classic")

Tkinter ttk style classic

 

전체코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import tkinter as tk
from tkinter import ttk
 
window = tk.Tk()
 
style = ttk.Style()
style.theme_use("clam")
# style.theme_use("alt")
# style.theme_use("default")
# style.theme_use("classic")
 
button = ttk.Button(window, text="클릭하세요")
button.pack()
 
label = ttk.Label(window, text="안녕하세요!")
label.pack()
 
checkbox = ttk.Checkbutton(window, text="동의합니다.")
checkbox.pack()
 
radio1 = ttk.Radiobutton(window, text="옵션 1")
radio1.pack()
radio2 = ttk.Radiobutton(window, text="옵션 2")
radio2.pack()
 
progress = ttk.Progressbar(window, mode="indeterminate")
progress.pack()
 
window.mainloop()
 
cs

 

 

2. Tkinter ttk style 스타일 변경 configure()

Tkinter에서는 위젯의 스타일을 변경할 수 있습니다. 이를 통해 버튼, 라벨 등의 위젯을 사용자 정의할 수 있습니다. 스타일을 변경하는 방법은 `configure()` 메소드를 사용하여 위젯의 스타일을 변경하는 것과 동일합니다.

예를 들어, 버튼의 배경색을 노란색으로, 글꼴을 Arial로, 크기를 12로 변경하려면 다음과 같이 코드를 작성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
from tkinter import *
from tkinter import ttk
 
root = Tk()
style = ttk.Style()
 
style.configure("Custom.TButton", background="yellow", font=("Arial", 12))
 
button = ttk.Button(root, text="Custom Button", style="Custom.TButton")
button.pack()
 
root.mainloop()
 
cs

[실행화면]

configure1
configure2

 

configure() 사용시 같은 스타일을 여러 위젯에 적용해야 할 때 유용합니다. 이를 통해 일관된 디자인을 유지할 수 있습니다.

 

 

3. Tkinter ttk style 스타일 개별 변경 config()

Tkinter에서는 위젯마다 고유한 스타일 ID를 가집니다. 이를 이용하여 개별 위젯에 대한 스타일을 지정할 수 있습니다. 개별 위젯에 스타일을 지정하는 방법은 매우 유용합니다. 이를 통해 특정 위젯에 대한 디자인을 완전히 변경할 수 있습니다.

예를 들어, 라벨 위젯의 글씨체를 Times New Roman으로, 글씨 크기를 16으로 변경하려면 다음과 같이 코드를 작성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
from tkinter import *
 
root = Tk()
 
label = Label(root, text="Custom Label")
label.config(font=("Times New Roman", 16))
label.pack()
 
root.mainloop()
 
cs

[실행화면]

Tkinter ttk style config

 

 

4. Tkinter ttk style 스타일 적용 예시

Tkinter ttk style label, button, combobox, radiobutton, entry 적용

Tkinter ttk style

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import tkinter as tk
from tkinter import ttk
 
# Tkinter 윈도우 생성
window = tk.Tk()
 
# ttk 스타일 객체 생성
style = ttk.Style()
 
# Label 스타일 설정
style.configure("MyLabel.TLabel", background="white", foreground="black", font=("Arial", 12, "bold"))
 
# Button 스타일 설정
style.configure("MyButton.TButton", background="blue", foreground="white", font=("Arial", 10, "bold"))
 
# Combobox 스타일 설정
style.configure("MyCombobox.TCombobox", fieldbackground="white", selectbackground="lightgray", font=("Arial", 10))
 
# Entry 스타일 설정
style.configure("MyEntry.TEntry", fieldbackground="white", font=("Arial", 10))
 
# Radiobutton 스타일 설정
style.configure("MyRadiobutton.TRadiobutton", background="white", foreground="black", font=("Arial", 10))
 
# Label 생성 및 스타일 적용
label = ttk.Label(window, text="Hello World", style="MyLabel.TLabel")
label.pack()
 
# Button 생성 및 스타일 적용
button = ttk.Button(window, text="Click Me", style="MyButton.TButton")
button.pack()
 
# Combobox 생성 및 스타일 적용
combobox = ttk.Combobox(window, values=["Option 1", "Option 2"], style="MyCombobox.TCombobox")
combobox.pack()
 
# Entry 생성 및 스타일 적용
entry = ttk.Entry(window, style="MyEntry.TEntry")
entry.pack()
 
# Radiobutton 생성 및 스타일 적용
radio1 = ttk.Radiobutton(window, text="Option 1", value=1, style="MyRadiobutton.TRadiobutton")
radio1.pack()
radio2 = ttk.Radiobutton(window, text="Option 2", value=2, style="MyRadiobutton.TRadiobutton")
radio2.pack()
 
# Tkinter 윈도우 실행
window.mainloop()
 
cs

 

 

[관련글]

 

Python Tkinter Canvas 사용법 및 예제

Tkinter를 사용하면 다양한 위젯을 만들 수 있고, 이 중 캔버스는 그래픽을 그릴 수 있는 영역을 제공합니다. 캔버스는 그림판과 유사한 기능을 가지고 있어서 그림 그리기, 다이어그램 만들기, 게

2toy.net

 

챗GPT 란? (CHAT GPT 사용)

챗GPT 란 무엇일까요? 요즘 너무 핫하다 못해 마치 옆에 있는 선생님처럼 느껴지는 이 인공지능 AI에 대해서 이해하기 쉽게 정리하려 합니다. 결론적으로 챗GPT에게 질문을 하면, 형식적인 답이 아

2toy.net

 

파이썬 exe 변환 기본편 - Python Pyinstaller Converter

기존 간단히 개발한 유투브 다운로드 프로그램을 파이썬 exe 변환 및 실행을 위해 Python Pyinstaller Converter 팩키지를 사용하여 만들어 보려 합니다. 별도의 파이썬 인터프린터나 모듈 설치 없이, 윈

2toy.net

반응형