Appia의 IT세상

파이썬[Python] 030 tkinter 활용 Filedialog(Open, Save, Directory) 본문

Python/Python Tk (GUI)

파이썬[Python] 030 tkinter 활용 Filedialog(Open, Save, Directory)

Appia 2020. 1. 4. 19:40
반응형

이번 포스팅은 메뉴 만들기에 자주 활용되는 file Open 또는 file Save, directory  선택하는 다이얼로그를 나타내게 하는 부분에 대해서 포스팅을 하고자 합니다. 다음 부분들을 별도의 함수로 만들어서, 메뉴와 연결해 보도록 하겠습니다.

 

먼저 앞서 메뉴를 생성한 방법에 대해서 다음 링크에서 참조하시길 바랍니다.

파이썬[Python] 025 tkinter 기본강의 005 Menu, Menubutton

 

파이썬[Python] 025 tkinter 기본강의 005 Menu, Menubutton

오늘 포스팅에서는 GUI에서 가장 기본 되는 Menu를 생성하는 방법과 버튼에 추가 메뉴가 달리는 Menubutton를 생성하는 방법에 대해서 살펴보고자 합니다. Menu 대부분 GUI기반의 툴을 사용하다 보면, File, Edit,..

appia.tistory.com

위의 링크에서 사용된 소스 코드는 다음과 같습니다.

from tkinter import *

def domenu():
    print("OK")

root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=domenu)
filemenu.add_command(label="Open", command=domenu)
filemenu.add_command(label="Save", command=domenu)
filemenu.add_command(label="Save as...", command=domenu)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
editmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Edit", menu=editmenu)
editmenu.add_command(label="Copy", command=domenu)
editmenu.add_command(label="Paste", command=domenu)
editmenu.add_separator()
editmenu.add_command(label="Delete", command=domenu)
helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=domenu)

root.config(menu=menubar)
root.mainloop()

 

위의 코드에 각 File Open/ File Save를 함수형태로 추가하여 연결하도록 하겠습니다. 

 

File Open 

def Load():
    filename = filedialog.askopenfilename(initialdir="/", title="Select file",
                                          filetypes=(("PPTX files", "*.pptx"),
                                          ("all files", "*.*")))
    print(filename)

위의 함수가 실행되면 다음과 같은 화면이 나타납니다. 

 

File Save 

def Save():
    filename = filedialog.asksaveasfilename(initialdir="/", title="Select file",
                                          filetypes=(("PPTX files", "*.pptx"), 
                                          ("all files", "*.*")))
    print(filename)

위의 함수가 실행되면 다음과 같은 화면이 나타납니다. 

위의 코드에 이 부분을 연결해 봤습니다. 

from tkinter import *
from tkinter import filedialog

def Load():
    filename = filedialog.askopenfilename(initialdir="/", title="Select file",
                                          filetypes=(("PPTX files", "*.pptx"),
                                          ("all files", "*.*")))
    print(filename)

def Save():
    filename = filedialog.asksaveasfilename(initialdir="/", title="Select file",
                                          filetypes=(("PPTX files", "*.pptx"),
                                          ("all files", "*.*")))
    print(filename)

def domenu():
    print("OK")

root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=domenu)
filemenu.add_command(label="Open", command=Load)
filemenu.add_command(label="Save", command=Save)
filemenu.add_command(label="Save as...", command=Save)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
editmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Edit", menu=editmenu)
editmenu.add_command(label="Copy", command=domenu)
editmenu.add_command(label="Paste", command=domenu)
editmenu.add_separator()
editmenu.add_command(label="Delete", command=domenu)
helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=domenu)

root.config(menu=menubar)
root.mainloop()

이 부분을 다음과 같이 파일로 공유 드립니다. 참고하시길 바랍니다. 

Menu.py
0.00MB

그리고 참고로 Open Directory를 선택하는 Dialog에 대한 함수를 만들어봤습니다. 

from tkinter import filedialog
from tkinter import *
root = Tk()
root.directory = filedialog.askdirectory()
print (root.directory)

위를 실행하면 다음과 같은 화면이 나타납니다. 

오늘은 file open/ file save/ open directory에 대해서 살펴봤습니다. 실제 메뉴 만들기와 함께 많이 사용될 부분이기 때문에 활용이 잘 될 것이라고 생각합니다. 

 

메뉴 생성된 부분은 파이썬 3으로 생성된 부분입니다. 마음껏 활용하시길 바랍니다. 혹 궁금하시거나 문의 사항이 있으시면 언제든 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments