본문 바로가기

InfoSec Log/Python

[Python] 메모장 기능 구현

 

"Windows의 Notepad 내 사용 가능한 기능들을 Python을 이용하여 구현"

 

 

Features

  • 텍스트 입력
  • 새 파일 열기
  • 파일 저장
  • 프로그램 종료
  • 저자 정보

 

전체 소스코드

from tkinter import *
from tkinter.filedialog import *
import tkinter.font

def new_file(): # 새 파일
    txt_area.delete(1.0, END)

def save_file(): # 파일 저장
    f = asksaveasfile(mode="w", defaultextension='.txt', filetypes=[('Text files', '.txt')]) # 기본 txt 확장자
    txt_save = str(txt_area.get(1.0, END))
    f.write(txt_save)
    f.close()

def info(): # 저자 정보
    help_view = Toplevel(window)
    help_view.geometry("300x50+800+300")
    help_view.title("저자 정보")
    lb = Label(help_view, text="ⓒ2024 MrGuanJo All Rights Reserved.")
    lb.pack()

window = Tk() # 객체 생성
window.title("Notepad")
window.geometry("800x800+500+100") # 화면 크기 및 처음 위치
window.resizable(False, False)

menu = Menu(window) # 화면 내 메뉴기능 생성
menu01 = Menu(menu, tearoff=0) # 첫번째 메뉴 생성
menu01.add_command(label="New file", command=new_file) # 첫번째 메뉴 내 구성요소
menu01.add_command(label="Save", command=save_file)
menu01.add_separator() # 메뉴 내 선으로 구분
menu01.add_command(label="Exit", command=window.destroy) # 프로그램 종료
menu.add_cascade(label="File", menu=menu01) # 첫번째 메뉴의 lable을 "File"로

menu02 = Menu(menu, tearoff=0) # 두번째 메뉴 생성
menu02.add_command(label="Author Info.", command=info) # 두번째 메뉴 내 구성요소
menu.add_cascade(label="Author", menu=menu02) # 두번째 메뉴의 label을 "Author"로


font = tkinter.font.Font(size=20, weight="normal")
txt_area = Text(window, font=font ) # 텍스트 창 생성

# 왼쪽, 오른쪽 공백 설정
window.grid_rowconfigure(0, weight=1) 
window.grid_columnconfigure(0, weight=1)

txt_area.grid(sticky = N + E + S + W) # 텍스트 창을 동서남북으로 붙이기

window.config(menu=menu)

window.mainloop() # 프로그램 구동 유지

 

 

 

Results

 

텍스트 입력
첫번째 메뉴 내 새 파일, 저장, 종료

 

두번째 메뉴 내 저자 정보
저자 정보

 

파일 저장 후 ms notepad로 열람
저장 기능을 통해저장한 파일