Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter 메뉴의 tearoff 속성 완벽 정리 – 메뉴를 창에서 분리하는 방법

Tkinter의 Menu 위젯을 사용하면 메뉴바와 하위 메뉴(서브메뉴)를 손쉽게 만들 수 있습니다. 그리고 Tkinter 메뉴에는 다양한 속성이 있는데, 그중 tearoff 속성은 메뉴의 동작 방식을 결정하는 중요한 옵션입니다.

tearoff 속성이란?

tearoff 속성은 메뉴를 메인 윈도우(부모 창)로부터 떼어낼 수 있도록 만들어 주는 기능입니다. 불리언(Boolean) 값을 인자로 받으며, 값에 따라 다음과 같이 두 가지 동작을 합니다.

  • tearoff=0 : 메뉴가 항상 윈도우에 고정되어 떼어낼 수 없습니다.
  • tearoff=1 : 메뉴 상단에 점선("----") 형태의 구분선이 표시되며, 이 점선을 클릭하면 메뉴를 별도의 독립 창으로 분리할 수 있습니다.

예제 코드

아래 예제는 tearoff=0으로 설정하여 메뉴를 고정시킨 경우입니다. tearoff=1로 변경하면 분리 가능한 메뉴가 됩니다.

# tkinter 라이브러리 임포트
from tkinter import *
win = Tk()
win.title("Tearoff Example")
win.geometry("600x500")

# 메뉴 선택 시 실행될 함수 정의
def mytext():
    lab = Label(win, text="메뉴를 선택했습니다", font=('Helvetica', 20)).pack(pady=20)

# 메뉴바 생성
menu_bar = Menu(win)

# 분리 불가능한 메뉴 생성
defile_menu = Menu(menu_bar, tearoff=0)

# 분리 가능한 메뉴를 원한다면 아래 코드 사용
# file_menu = Menu(menu_bar, tearoff=1)
file_menu.add_command(label="New", command=mytext)
menu_bar.add_cascade(label='File', menu=file_menu)
win.config(menu=menu_bar)

mainloop()

실행 결과

위 코드를 실행하면 메뉴바가 포함된 윈도우가 화면에 나타납니다.

tearoff=0으로 설정한 경우에는 메뉴가 윈도우에 단단히 고정되어 있지만, tearoff=1로 설정한 경우에는 메뉴 최상단에 점선 구분선이 표시됩니다. 이 점선 부분을 클릭하면 해당 메뉴가 독립적인 플로팅 창으로 분리되어 자유롭게 배치할 수 있습니다.

정리

tearoff 속성은 Tkinter 메뉴의 유연성을 높여주는 유용한 옵션입니다. 일반적인 데스크톱 애플리케이션 스타일처럼 메뉴를 고정하고 싶다면 tearoff=0을, 사용자가 메뉴를 별도 창으로 꺼내 쓸 수 있게 하려면 tearoff=1을 사용하면 됩니다.