파이썬 (Python) _ 가을 학기 12 차시
이번 시간에는 '메모장' 프로그램을 통해 Menu 위젯을 살펴보고, 코딩을 통해 직접 만들어봤습니다.
![[마곡 코딩] 파이썬 11월 27일 목요일 5시 30분 수업_ 메모장 사진 1](/blog/224091162112/001.png)
메모장에는 'File' 메뉴와 'Help' 메뉴 위젯과 글씨를 작성할 수 있는 텍스트 위젯으로 이루어져 있습니다.
menu = Menu(window) menu_1 = Menu(menu, tearoff=0) menu_1.add_command(label="New File", command=new_file) menu_1.add_command(label="Save", command=save_file) menu_1.add_separator() #구분선 menu_1.add_command(label="Exit", command=window.destroy) menu.add_cascade(label="File", menu=menu_1)
window.config(menu=menu)
위 코드는 File 메뉴와 하위 메뉴들을 생성하는 코드입니다. menu = Menu(window) 코드를 통해 window 창 위에 메뉴바 틀을 생성한 후, menu_1을 통해 "파일"이라는 상위 메뉴를 생성하고 있습니다. 이때, menu.add_cascade() 메서드를 통해 메뉴바 위에 "File" 상위 메뉴가 추가되도록 해주며, menu_file.add_command() 메서드를 통해 클릭할 수 있는 "New File", "Save", "Exit" 등의 서브 메뉴를 추가할 수 있습니다.
마지막으로, window.config() 메서드를 통해 만든 메뉴바를 윈도우 상단에 붙여줘 window 위에 메뉴바가 추가되도록 만들어 줬습니다.
여기서 'Exit' 하위 메뉴를 클릭하게 되면 window.destroy() 메서드가 실행되는데 해당 메서드는 메모장 프로그램을 종료시키는 메서드입니다.
![[마곡 코딩] 파이썬 11월 27일 목요일 5시 30분 수업_ 메모장 사진 2](/blog/224091162112/002.png)
다음은 'Help' 상위 메뉴를 만들고 'About' 하위 메뉴를 추가한 후
![[마곡 코딩] 파이썬 11월 27일 목요일 5시 30분 수업_ 메모장 사진 3](/blog/224091162112/003.png)
다음은 메모장 안에 글씨를 작성하기 위해 text 위젯을 추가해 봤습니다.
text = Text(window, height=30, width=80) text.pack()
window.mainloop()
Text() 위젯을 생성한 후 위치 속성, height(높이) 속성, width(폭) 속성을 지정해 준 후, pack() 메서드를 통해 메모장 프로그램에 글씨를 입력할 수 있게 만들었습니다.
이후에는 'New File' 하위 메뉴의 기능을 구현해 봤습니다.
def new_file(): text.delete(1.0,END)
코드를 살펴보면 Text 위젯의 delete() 메서드를 사용하여 처음(1.0)부터 끝(END)까지 작성한 내용을 지워 새 파일로 만들어 주도록 구현해 봤습니다.
def save_file(): f = filedialog.asksaveasfile(mode = "w", defaultextension=".txt",filetypes=[('Text files', '.txt')]) text_save = str(text.get(1.0, END)) f.write(text_save) f.close()
다음은 'Save' 하위 메뉴를 눌렀을 때 실행되는 save_file() 함수를 구현했습니다. f = filedialog.asksaveasfile(...) 부분은 Tkinter의 filedialog가 '다른 이름으로 저장' 창을 띄우게 하여 파일 객체에 대한 정보를 f에 저장하는 코드입니다. asksaveasfile() 속 옵션을 살펴보자면 mode="w"는 쓰기 모드를 의미하며, 새로운 파일을 만들 때 주로 사용하는 모드입니다. defaultextension은 파일의 기본 확장자를 '.txt'로 지정하는 옵션이며 filetypes는 저장 창에서 보이는 파일의 종류를 txt(텍스트 파일)로 제한시키는 옵션입니다.
이후 text_save 변수에는 Text 위젯에 작성된 내용을 저장합니다. 이때, text.get(1.0, END)를 통해 첫째 줄 맨 앞부터 마지막까지의 내용을 가져올 수 있었습니다.
이후 f.write() 메소드를 통해 파일 객체 f에 내용을 작성하고 파일을 닫는 코드입니다.
![[마곡 코딩] 파이썬 11월 27일 목요일 5시 30분 수업_ 메모장 사진 4](/blog/224091162112/004.png)
이후에는 새로운 윈도우 보조 창을 띄울 수 있는 Toplevel 위젯을 사용하여 About 하위 메뉴 기능 구현 방식에 대해 살펴봤습니다.
이렇게 이번 시간에는 메모장 프로그램의 핵심 기능을 위주로 구현해 봤습니다. 다음 시간에는 '자격증' 수업으로 돌아오겠습니다~
#마곡역 코딩 학원 #신방화역코딩학원 #유아코딩 #공항초 #공진초 #코드페어 #송화초 #초딩코딩 #AI #대회 #마곡나루맛집 #신방화역학원 #코딩학원 #소프트웨어 #대회준비 #VR #올림피아드 #엔트리 #신방화역맛집 #신방화역카페 #라온lc #laonlc #엔트리 #coding #파이썬 #스크래치