Appia의 IT세상

파이썬[Python] tkinter 활용 - 파일 불러와서 텍스트 에디터 출력하기(filedialog,text) 본문

Python/Python Tk (GUI)

파이썬[Python] tkinter 활용 - 파일 불러와서 텍스트 에디터 출력하기(filedialog,text)

Appia 2020. 5. 25. 23:11
반응형

파이썬[Python] tkinter 활용 - 파일 불러와서 텍스트 에디터 출력하기

 

이번 포스팅은 제 포스팅을 보시고, 질문 주신 분을 위해서 코딩을 하나 해봤습니다. 일단, 버튼을 눌러서 파일로 있는 부분에 내용을 출력하고 싶다는 내용이었습니다. 물론, 버튼을 생성하지는 않고, 메뉴에 파일 불러오기를 통해서 안에 있는 내용에 대해서 텍스트에 출력하는 예제를 한번 작성해봤습니다. 

from tkinter import *
 
from tkinter import filedialog
 
 
class tkGUi :
 
 
    def __init__(self):
        
        self.root = Tk()
        
        menubar = Menu(self.root)
        
        self.text = Text(self.root)
        
        self.text.pack()
        
        filemenu = Menu(menubar, tearoff=0)
        
        menubar.add_cascade(label="File", menu=filemenu)
        
        filemenu.add_command(label="New", command=self.domenu)
        
        filemenu.add_command(label="Open", command=self.Load)
        
        filemenu.add_command(label="Save", command=self.Save)
        
        filemenu.add_command(label="Save as...", command=self.Save)
        
        filemenu.add_separator()
        
        filemenu.add_command(label="Exit", command=self.root.quit)
        
        editmenu = Menu(menubar, tearoff=0)
        
        menubar.add_cascade(label="Edit", menu=editmenu)
        
        editmenu.add_command(label="Copy", command=self.domenu)
        
        editmenu.add_command(label="Paste", command=self.domenu)
        
        editmenu.add_separator()
        
        editmenu.add_command(label="Delete", command=self.domenu)
        
        helpmenu = Menu(menubar, tearoff=0)
        
        menubar.add_cascade(label="Help", menu=helpmenu)
        
        helpmenu.add_command(label="About...", command=self.domenu)
 
        self.root.config(menu=menubar)
        
        self.root.mainloop()
 
 
    def Load(self):
        
        filename = filedialog.askopenfilename(initialdir="/", title="Select file",
                                              filetypes=(("text files""*.txt"),
                                              ("all files""*.*")))
        
        print(filename)
        
        data=open(filename,'rt',encoding="utf-8")
        
        self.text.delete('1.0', END)
        
        self.text.insert(END,data.read())
 
 
    def Save(self):
        filename = filedialog.asksaveasfilename(initialdir="/", title="Select file",
                                              filetypes=(("text files""*.txt"),
                                              ("all files""*.*")))
        
        print(filename)
 
 
    def domenu(self):
    
        print("OK")
 
 
if __name__ == '__main__':
 
    Example = tkGUi()
cs

 

위의 부분을 실행하면 다음과 같은 결과가 나옵니다. 

물론 여기까지는 기존에 포스팅 했었던 내용과 거의 유사합니다. 제가 변경한 것은 File에서 Open메뉴를 선택하여 파일을 선택하였을 때의 이벤트 처리를 중접적으로 업그레이드 하였습니다. 그리고, 이 부분을 바탕으로 단순히 tkinter에 대해서 지식 획득이 아니라, 어딘가에 활용하고 싶은 신것이라 생각하여 클래스 형태로 변경하였습니다. 다음의 이전 포스팅도 참조 하시면 도움이 됩니다. 

https://appia.tistory.com/111

 

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

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

appia.tistory.com

그리고 텍스트 관련된 부분에 대해서도 참조 하시길 바랍니다. 

https://appia.tistory.com/109

 

파이썬[Python] 028 tkinter 기본강의 008 Text, Spinbox

이번 포스팅에서는 Text, Spinbox에 대해서 살펴보겠습니다. 흔히 대학교 때나, 실습을 할 때에 간단한 메모장 만들기를 매우 많이 합니다. 관련해서 가장 많이 사용하는 위젯이 Text입니다. 또한 Spin

appia.tistory.com

그럼 추가적으로 코드에 대해서 한번 살펴보겠습니다. ( 이벤트 관련 연결된 함수만 살펴보겠습니다. 나머지 부분들은 구조적인 배치등임으로 생략하겠습니다.) 

    def Load(self):
        
        filename = filedialog.askopenfilename(initialdir="/", title="Select file",
                                              filetypes=(("text files""*.txt"),
                                              ("all files""*.*")))
        
        print(filename)
        
        data=open(filename,'rt',encoding="utf-8")
        
        self.text.delete('1.0', END)
        
        self.text.insert(END,data.read())
cs

 

일단 파일 다이어로그를 통해서 불러오고자 하는 파일을 선택합니다. 그리고, 바로 open() 명령어를 통해서 불러오시면 됩니다. 이때, text에 출력하시기 전에 반드시 기존에 내용을 삭제하십니다. 그런 후에 다시 읽어올 데이터를 data.read()를 통해서 text에 insert해주시길 바랍니다. 이와 같은 과정으로 작업하시면 파일에 있는 내용을 출력해주게 됩니다. 

 

혹 나머지 부분들에 대해서는 직접 채워보시는 것을 권장하면서 비워두었습니다. 

TKinterAS.py
0.00MB

혹시 추가적으로 궁금하신 점이나 문의 사항이 있으시면 댓글 및 방명록에 글 남겨주시길 바랍니다. 소중한 댓글에 원하시는 결과값이었으면 좋겠습니다. 감사합니다. 

 

 

반응형
Comments