Tkinter 튜토리얼-메뉴 바

  1. Tkinter 기본 메뉴 바
  2. Tkinter 메뉴 바 명령

GUI 에서 가장 일반적인 요소 중 하나는 메뉴 표시 줄입니다. 메뉴 막대는 일반적으로 일련의 메뉴를 표시하기 위해 제목 표시 줄 아래에 있습니다. 최상위 메뉴 중 하나를 클릭하면 하위 메뉴가 확장되어보다 관련성이 높은 메뉴 항목이 표시됩니다. 하위 메뉴는 일반적으로 open,close,save 또는 quit 와 같은 특정 명령에 바인딩됩니다.

Tkinter 기본 메뉴 바

대부분의 편집기에서와 같이 ‘File’메뉴가있는 첫 번째 메뉴 표시 줄 예제를 작성합니다. 단순성을 위해 ‘열기’, ‘저장’및 ‘종료’하위 메뉴 만 포함합니다.

Tkinter Menubar_Basic.py
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()

Tkinter 메뉴 바 기본

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)

filemenuadd_cascade 명령으로 menubar 에 추가됩니다. Fileapp 프레임의 최상위 레벨에 표시되는 메뉴 레이블입니다.

app.config(menu=menubar)

menubar 는 위에서 설명한 것처럼 app 의 하위 위젯으로 만들어 지지만, 여전히 appmenu 가되도록 구성해야합니다. 그렇지 않으면 GUI 에 메뉴 표시 줄이 표시되지 않습니다.

File 의 하위 메뉴에서 Open 또는 Save 와 같은 옵션을 클릭하면 명령이 없기 때문에 전혀 응답하지 않습니다. 다음 세션에서 명령을 기능적으로 만들 것입니다.

Tkinter 메뉴 바 명령

Tkinter Menubar_Command.py
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 에 바인드 할 수 있습니다.

comments powered by Disqus