Tkinter 튜토리얼-메뉴 바
GUI 에서 가장 일반적인 요소 중 하나는 메뉴 표시 줄입니다. 메뉴 막대는 일반적으로 일련의 메뉴를 표시하기 위해 제목 표시 줄 아래에 있습니다. 최상위 메뉴 중 하나를 클릭하면 하위 메뉴가 확장되어보다 관련성이 높은 메뉴 항목이 표시됩니다. 하위 메뉴는 일반적으로 open
,close
,save
또는 quit
와 같은 특정 명령에 바인딩됩니다.
Tkinter 기본 메뉴 바
대부분의 편집기에서와 같이 File
메뉴가있는 첫 번째 메뉴 표시 줄 예제를 작성합니다. 단순성을 위해 ‘열기’, ‘저장’및 ‘종료’하위 메뉴 만 포함합니다.
import tkinter as tk
app = tk.Tk()
app.geometry("300x200")
app.title("Basic Menu Bar")
menubar = tk.Menu(app)
filemenu = tk.Menu(menubar)
filemenu.add_command(label="Open")
filemenu.add_command(label="Save")
filemenu.add_command(label="Exit")
menubar.add_cascade(label="File", menu=filemenu)
app.config(menu=menubar)
app.mainloop()
menubar = tk.Menu(app)
Menu
의 주어진 파라미터는 생성 된 메뉴의 부모 위젯입니다. 위의 코드 라인은 메뉴 위젯 menubar
가 프레임 app
의 최상위 레벨이됨을 의미합니다.
filemenu = tk.Menu(menubar)
마찬가지로 filemenu
는 위젯 menubar
의 메뉴이거나 app
프레임의 하위 메뉴입니다.
filemenu.add_command(label="Open")
add_command
는 메뉴 filemenu
에 명령을 추가합니다. label
은 하위 메뉴에 표시되는 텍스트입니다.
menubar.add_cascade(label="File", menu=filemenu)
filemenu
는 add_cascade
명령으로 menubar
에 추가됩니다. File
은 app
프레임의 최상위 레벨에 표시되는 메뉴 레이블입니다.
app.config(menu=menubar)
menubar
는 위에서 설명한 것처럼 app
의 하위 위젯으로 만들어 지지만, 여전히 app
의 menu
가되도록 구성해야합니다. 그렇지 않으면 GUI 에 메뉴 표시 줄이 표시되지 않습니다.
File
의 하위 메뉴에서 Open
또는 Save
와 같은 옵션을 클릭하면 명령이 없기 때문에 전혀 응답하지 않습니다. 다음 세션에서 명령을 기능적으로 만들 것입니다.
Tkinter 메뉴 바 명령
import tkinter as tk
from tkinter import filedialog
def onOpen():
print(
filedialog.askopenfilename(
initialdir="/",
title="Open file",
filetypes=(("Python files", "*.py;*.pyw"), ("All files", "*.*")),
)
)
def onSave():
print(
filedialog.asksaveasfilename(
initialdir="/",
title="Save as",
filetypes=(("Python files", "*.py;*.pyw"), ("All files", "*.*")),
)
)
app = tk.Tk()
app.geometry("300x200")
app.title("Menu Bar Command")
menubar = tk.Menu(app)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=onOpen)
filemenu.add_command(label="Save", command=onSave)
filemenu.add_command(label="Exit", command=app.quit)
menubar.add_cascade(label="File", menu=filemenu)
app.config(menu=menubar)
app.mainloop()
filemenu = tk.Menu(menubar, tearoff=0)
tearoff
는 기본적으로 1
로 설정되어 있으며 상단의 점선을 클릭하면 플로팅 메뉴를 만들기 위해 메뉴를 기본 창에서 분리합니다. 이 플로팅 기능을 비활성화하려면 0
으로 설정됩니다.
filemenu.add_command(label="Open", command=onOpen)
onOpen
기능은 메뉴 Open
에 바인딩되어 있으며 Open
을 클릭하면 호출됩니다.
def onOpen():
print(
filedialog.askopenfilename(
initialdir="/",
title="Open file",
filetypes=(("Python files", "*.py;*.pyw"), ("All files", "*.*")),
)
)
이 함수는 열린 대화 상자를 표시하고 선택한 파일 이름을 반환합니다. 우리 예제에서는 실제로 파일을 열지 않고 파일 이름을 인쇄합니다.
tkfiledialog
에는 세 가지 기능이 있습니다.
함수 | 매개 변수 | 기술 |
---|---|---|
.askopenfilename |
디렉토리, 제목, 확장 | ** 파일을 열려면 ** : 기존 파일의 선택을 요청하는 대화 상자. |
.asksaveas 파일 이름 |
디렉토리, 제목, 확장자 | ** 저장 ** 파일 : 파일 작성 또는 교체를 요청하는 대화 상자. |
.askdirectory |
없음 | ** 디렉토리 열기 ** |
filemenu.add_command(label="Exit", command=app.quit)
Tkinter 에는 루트 GUI 를 종료하는 내부 quit
기능이 있습니다. 우리는 우리 자신의 exit
함수를 생성하는 대신이 기존 함수를 Exit
에 바인드 할 수 있습니다.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook