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")
2) alt 테마
style.theme_use("alt")
3) default 테마
style.theme_use("default")
4) classic 테마
style.theme_use("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 |
[실행화면]
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 |
[실행화면]
4. Tkinter ttk style 스타일 적용 예시
Tkinter ttk style label, button, combobox, radiobutton, entry 적용
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 |
[관련글]
'파이썬 (pythoon)' 카테고리의 다른 글
파이썬 split 함수 문자열 리스트 변환 (0) | 2023.05.26 |
---|---|
파이썬 딕셔너리 (Dictionary) 정리 (0) | 2023.05.25 |
파이썬 리스트 정리 - insert, append, 인덱싱, 슬라이싱 외 (0) | 2023.05.23 |
Python Tkinter Canvas 사용법 및 예제 (0) | 2023.05.22 |
python tkinter photoimage 사진 이미지 넣는 방법 (0) | 2023.05.21 |