Tkinter에서 메뉴바(Menu Bar)는 세로로 나열된 메뉴 항목들로 구성됩니다. 메뉴바는 Menu(root) 객체를 초기화하여 손쉽게 생성할 수 있습니다. 그런데 애플리케이션에서 메뉴바를 생성하면 기본적으로 메뉴 최상단에 점선으로 된 구분선(tear-off 라인)이 함께 표시됩니다.
이 점선은 메뉴를 창에서 분리하여 별도의 플로팅 메뉴로 떼어낼 수 있음을 나타내는 표시입니다. 만약 이 구분선이 불필요하다면 tearoff 속성을 사용하여 간단히 제거할 수 있습니다. 메뉴를 생성할 때 tearoff=0 또는 tearoff="off"로 설정하면 됩니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# Tkinter 프레임 인스턴스 생성
win = Tk()
# 프레임 크기 및 제목 설정
win.geometry("750x250")
win.title("Editor")
# 메뉴바 추가
menu_bar = Menu(win)
# 메뉴바에 새 메뉴 생성 (tearoff 비활성화)
file_menu = Menu(menu_bar, tearoff="off")
# 메뉴바에 'File' 메뉴 연결
menu_bar.add_cascade(label='File', menu=file_menu)
# File 메뉴에 메뉴 항목 추가
file_menu.add_command(label="New", compound='left', underline=0)
file_menu.add_command(label="Open", compound='left', underline=0)
file_menu.add_command(label="Save", compound='left', underline=0)
file_menu.add_command(label="Exit", compound='left', underline=0)
win.config(menu=menu_bar)
win.mainloop()실행 결과
위 코드를 실행하면 창 상단에 메뉴바가 표시되며, tearoff="off" 옵션 덕분에 메뉴를 클릭했을 때 점선 구분선 없이 깔끔한 메뉴 항목만 나타납니다.
반대로 tearoff="on"(또는 tearoff=1)으로 설정한 후 코드를 다시 실행해 보면, 메뉴 최상단에 점선 구분선이 나타나는 것을 확인할 수 있습니다. 이 점선을 클릭하면 해당 메뉴가 원본 창에서 분리되어 독립적인 창으로 떨어져 나오게 됩니다.
정리
메뉴바의 점선을 제거하려면 Menu 객체 생성 시 tearoff=0을 지정하는 것이 가장 간단한 방법입니다. 대부분의 데스크톱 애플리케이션에서는 분리 가능한 메뉴가 오히려 어색하게 느껴질 수 있으므로, 일반적으로 tearoff 옵션을 비활성화하는 것이 좋습니다.