반응형

    파이썬 메모장 만들기 1편

    파이썬 메모장 만들기 1편

    안녕하세요 밤구름 입니다. 이번 포스팅은 파이썬을 통한 메모장 만드는 방법에 대해서 알아보려 합니다. 

    지금부터 하나씩 차근차근 알아보겠습니다.

     

    1.메모장 구성하기

    파이썬을 통하여 간단한 메모장을 만들려면 우선 tkinter라는 모듈을 사용해야 합니다.

    from tkinter import *
    from tkinter import filedialog
    
    root = Tk()
    #메모장이름
    root.title("메모장")
    #메모장 사이즈
    root.geometry("1000x800")
    
    #메모장 실행
    root.mainloop()

    tkinter모듈을 가져와서 TK()라는 인스턴스를 root에 가져와서 새 프로그램을 만들었습니다.

    위의 코드를 실행 시켜 본다면 아래의 창처럼 아무것도 없는 창이 만들어집니다.

    2.TEXT 위젯 추가

    이 새창에 pack() 매서드를 사용하여 Text 위젯을 창에 추가 합니다.

    from tkinter import *
    from tkinter import filedialog
    from tkinter import simpledialog
    
    root = Tk()
    #메모장이름
    root.title("메모장")
    #메모장 사이즈
    root.geometry("1000x800")
    
    #TEXT 위젯을
    text_area = Text(root, font=("Helvetica", 12))
    text_area.pack(fill=BOTH, expand=1)
    
    #메모장 실행
    root.mainloop()
    text_area = Text(root, font=("Helvetica", 12))
    text_area.pack(fill=BOTH, expand=1)

    단 두줄만 추가하여 아래의 이미지 처럼 입력이 가능한 기능 텍스트영역을 만들었습니다.

    3.저장 버튼, 열기 버튼, 닫기버튼 추가

    menu_bar = Menu(root)

    #메뉴 버튼들 셋팅
    file_menu = Menu(menu_bar, tearoff=0)
    file_menu.add_command(label="열기(O)", command=open_file)
    file_menu.add_command(label="저장(S)", command=save_file)
    file_menu.add_separator()
    file_menu.add_command(label="끝내기(X)", command=root.quit)
    menu_bar.add_cascade(label="파일(F)", menu=file_menu)

    #메뉴 버튼들 추가
    root.config(menu=menu_bar)

    위에 있는 코드들은 메모장에 버튼을 추가하는 코드입니다.

    menu_bar.add_cascade(label="파일(F)", menu=file_menu) 코드를 사용해서 파일(F)이라는 상단 메뉴 버튼을 만들었고

    file_menu.add_command(버튼이름,기능) 함수를 이용하여 열기, 저장, 끝내기 버튼을 만들었습니다. 

    file_menu.add_separator()는 구분해주는 역할을 하는 함수 입니다.

    아직 저장하는 기능과 여는 기능을 구현하지 않아 실제로 열리지는 않습니다. 다만 끝내기는 내장되어 있는 기능을 사용하는 것이어서 정상적으로 잘 작동합니다.

    4.함수 만들기

    #파일 열기 함수
    def open_file():
        file_path = filedialog.askopenfilename()
        with open(file_path, "r") as file:
            content = file.read()
            text_area.delete("1.0", END)
            text_area.insert(END, content)
    
    #파일 저장 함수
    def save_file():
        file_path = filedialog.asksaveasfilename(defaultextension=".txt")
        content = text_area.get("1.0", END)
        with open(file_path, "w") as file:
            file.write(content)

    이전 포스트를 참고하면 파이썬으로 함수 만드는 방법에 대해서 알 수 있습니다.

    이번에 만든 함수는 파일여는 함수와 파일 저장하는 함수 입니다.

    파일을 여는 함수는 open_file()이라 지었습니다. 

    file_path에 filedialog를 이용하여 내부파일에서 선택한 파일의 이름을 가져오게 했습니다.

    open() 함수를 사용해 파일의 이름을 읽음 으로 가져와 메모장에 뿌려주는 기능을 추가 하였습니다. 

    이때 메모장에 있는 내용들은 사라지고 열려는 파일의 내용을 메모장에 뿌려 주었습니다.

     

    파일을 저장하는 함수는 save_file()이라 지었습니다.

    file_path에 filedialog를 이용하여 저장할 파일 이름을 정하면 txt파일로 저장하게 하였습니다.

    이때 파일의 내용 전체를 가져와서 저장하게 하였습니다.

     

    전체코드

    from tkinter import *
    from tkinter import filedialog
    
    root = Tk()
    #메모장이름
    root.title("메모장")
    #메모장 사이즈
    root.geometry("1000x800")
    
    text_area = Text(root, font=("Helvetica", 12))
    text_area.pack(fill=BOTH, expand=1)
    
    #파일 열기 함수
    def open_file():
        file_path = filedialog.askopenfilename()
        with open(file_path, "r") as file:
            content = file.read()
            text_area.delete("1.0", END)
            text_area.insert(END, content)
    
    #파일 저장함수
    def save_file():
        file_path = filedialog.asksaveasfilename(defaultextension=".txt")
        content = text_area.get("1.0", END)
        with open(file_path, "w") as file:
            file.write(content)
    
    menu_bar = Menu(root)
    
    #메뉴 버튼들 셋팅
    file_menu = Menu(menu_bar, tearoff=0)
    file_menu.add_command(label="Open", command=open_file)
    file_menu.add_command(label="Save", command=save_file)
    file_menu.add_separator()
    file_menu.add_command(label="Exit", command=root.quit)
    menu_bar.add_cascade(label="File", menu=file_menu)
    
    #메뉴 버튼 추가
    root.config(menu=menu_bar)
    #메모장 실행
    root.mainloop()

     

     

    간단히 만들어 보는 파이썬 메모장입니다. 아직은 진짜 기초적인 저장, 열기, 닫기, 글 적기만 가능한 프로그램입니다.

    앞으로 하나씩 다양한 기능을 추가해서 쓸모 있는 메모장이 되도록 수정해 보도록 하겠습니다. 아래의 메모장을 다운받으셔서 코드 분석해 보셔도 좋습니다.

    memo.py
    0.00MB

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기