Tkinter 위젯이란?
Tkinter는 버튼(Button), 엔트리(Entry), 프레임(Frame), 라벨(Label), 라디오버튼(Radiobutton), 스크롤바(Scrollbar) 등 다양한 종류의 위젯을 기본으로 제공합니다. 위젯은 정보를 화면에 표시하거나 사용자가 시스템과 상호작용할 수 있도록 도와주는 표준 그래픽 사용자 인터페이스(GUI) 요소입니다.
이 글에서는 캔버스(Canvas), 엔트리(Entry) 필드, 라벨(Label), 버튼(Button)에서 테두리를 제거하는 방법을 예제 코드와 함께 살펴보겠습니다.
구현 단계
- 필요한 라이브러리를 임포트하고 tkinter 프레임의 인스턴스를 생성합니다.
- root.geometry 메서드를 사용해 프레임의 크기를 설정합니다.
- 캔버스(Canvas) 위젯을 생성하고 "bd" 속성으로 테두리 두께를 지정합니다. 이어서 "highlightthickness" 속성으로 캔버스 테두리의 표시 여부를 결정합니다. 캔버스 테두리를 없애려면 "highlightthickness=0"으로 설정하면 됩니다.
- 캔버스 안에 엔트리 필드 두 개를 만듭니다. 이때 하나의 엔트리 필드에는 borderwidth 속성을 사용해 테두리를 설정합니다.
- 같은 방식으로 라벨 두 개를 생성하고, 하나에는 borderwidth 속성과 relief='solid' 옵션을 함께 사용해 라벨 주위에 테두리를 표시합니다.
- 버튼 두 개를 만들고, 그중 하나에는 "borderwidth=0"을 설정합니다. 이렇게 하면 버튼 주위의 테두리가 사라집니다.
- 마지막으로 애플리케이션 창의 mainloop를 실행합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
# tkinter 프레임 인스턴스 생성
root = Tk()
# 프레임 크기 설정
root.geometry("700x350")
# 캔버스 위젯 생성
canvas = Canvas(root, bd=2, highlightthickness=2)
canvas.pack(side=TOP, padx=10, pady=10)
# 테두리가 있는 엔트리 위젯
text = Entry(canvas, width=50)
text.insert(0, "테두리가 있는 위젯")
text.config(borderwidth=5)
text.pack(side=TOP, padx=10, pady=10)
# 테두리가 없는 엔트리 위젯
text = Entry(canvas, width=50)
text.insert(0, "테두리가 없는 위젯")
text.pack(side=TOP, padx=10, pady=10)
# 테두리가 있는 라벨
label1 = Label(canvas, text="테두리가 있는 라벨", borderwidth=2, relief='solid', font="Calibri, 14")
label1.pack(side=BOTTOM, padx=10, pady=10)
# 테두리가 없는 라벨
label2 = Label(canvas, text="테두리가 없는 라벨", borderwidth=0, font="Calibri, 14")
label2.pack(side=BOTTOM, padx=10, pady=10)
# 일반 버튼
button1 = Button(root, text="일반 버튼")
button1.pack(side=TOP, padx=10, pady=10)
# 테두리가 없는 버튼
button2 = Button(root, text="테두리 없는 버튼", borderwidth=0)
button2.pack(side=TOP, padx=10, pady=10)
root.mainloop()실행 결과
코드를 실행하면 다음과 같은 결과가 출력됩니다.

실행 결과를 보면 캔버스 위젯에 테두리가 표시된 것을 확인할 수 있습니다. 캔버스에 "highlightthickness=0" 속성을 설정하면 주변 테두리가 더 이상 나타나지 않습니다.
마찬가지로 버튼도 두 개가 배치되어 있으며, 첫 번째 버튼에는 테두리가 있고 두 번째 버튼에는 테두리가 없습니다. 버튼 위젯의 테두리를 제거하려면 "borderwidth=0" 매개변수를 사용하면 됩니다.
추가 팁
라벨처럼 relief 옵션을 지원하는 위젯은 relief='flat'으로 설정해도 테두리를 숨길 수 있습니다. 또한 위젯 클릭 시 나타나는 점선 포커스 테두리가 거슬린다면 highlightthickness=0을 함께 적용하면 더욱 깔끔한 UI를 구현할 수 있습니다.