반응형
파이썬 메모장 만들기 2편
안녕하세요 밤구름 입니다. 이번 포스팅은 파이썬을 통한 메모장 만드는 방법에 대해서 알아보려 합니다.
지난 시간에 이어서 다양한 기능들을 하나하나씩 추가해서 완성해 보도록 하겠습니다.
1.메모장 타이틀 바꾸기
지난 시간에 간단히 메모장을 만들어 봤습니다. 이번에는 파일을 저장할때, 파일을 불러올때 메모장의 이름을 바꿔보도록 하겠습니다.
import os
#파일 열기 함수
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)
#새로 가져온 파일의 이름으로 메모장 이름 바꾸기
file_name = os.path.basename(file_path)
root.title(f"{file_name}")
#파일 저장 함수
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)
#새로 저장한 파일의 이름으로 메모장 이름 바꾸기
file_name = os.path.basename(file_path)
root.title(f"{file_name}")
파일명에 접근을 하려면 os 모듈을 임포트 해야 합니다.
그 다음 file_name에 현재 이름을 가져오는 os.path.basename()함수의 기능을 사용하면 됩니다.
위의 코드를 추가하고 실행을 시키면 메모장의 타이틀을 바꿀 수 있습니다.
1.파일열기
메모장 -> test.txt
2.파일저장
test.txt->test1.txt
2.새로 만들기
파이썬에서 새로 메모장을 만드는 기능입니다.
#새로 만들기
def new_file():
global file_path
file_path = None
text_area.delete("1.0", END)
root.title("*제목 없음")
file_menu.add_command(label="새로 만들기(W)", command=new_file)
새로 만들기 버튼과, 새로 만들었을 때, 메모장 이름을 *제목없음으로 바꾸는 기능을 완성하였습니다.
3.자동 글자 수 세기
파이썬에서 자동으로 글자 수를 세는 함수를 만들어 볼까 합니다.
#글자 수 세기
def auto_count_chars(event=None):
char_count = len(text_area.get("1.0", END))
char_count_n = len(text_area.get("1.0", END).replace("\n", ""))
status_bar.config(text=f"띄어쓰기 제외한 글자수: {char_count_n}, 띄어쓰기 포함한 글자수 : {char_count}")
text_area.bind("<KeyRelease>", auto_count_chars)
status_bar = Label(root, text="띄어쓰기 제외한 글자수: 0, 띄어쓰기 포함한 글자수: 0")
status_bar.pack(side=BOTTOM, fill=X)
함수를 만들어 본문 전체의 글자 수를 확인 하고 띄어쓰기를 포함한 글자수와 띄어쓰기를 제외한 글자수를 제는 변수를 만들었습니다. 그리고 본문 하단에 글자 수를 표기 하게 하였습니다.
text_area에 bind()를 사용하여 키를 누르고 나면 함수가 자동으로 실행되게 하였습니다.
4.전체코드
from tkinter import *
from tkinter import filedialog
import os
root = Tk()
#메모장이름
root.title("메모장")
#메모장 사이즈
root.geometry("1000x800")
#TEXT 위젯을
text_area = Text(root, font=("Helvetica", 12))
text_area.pack(fill=BOTH, expand=1)
#새로 만들기
def new_file():
global file_path
file_path = None
text_area.delete("1.0", END)
root.title("*제목 없음")
#파일 열기 함수
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)
#새로 가져온 파일의 이름으로 메모장 이름 바꾸기
file_name = os.path.basename(file_path)
root.title(f"{file_name}")
#파일 저장 함수
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)
#새로 저장한 파일의 이름으로 메모장 이름 바꾸기
file_name = os.path.basename(file_path)
root.title(f"{file_name}")
#글자 수 세기
def auto_count_chars(event=None):
char_count = len(text_area.get("1.0", END))
char_count_n = len(text_area.get("1.0", END).replace("\n", ""))
status_bar.config(text=f"띄어쓰기 제외한 글자수: {char_count_n}, 띄어쓰기 포함한 글자수 : {char_count}")
menu_bar = Menu(root)
#메뉴 버튼들 셋팅
file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="새로 만들기(W)", command=new_file)
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)
text_area.bind("<KeyRelease>", auto_count_chars)
status_bar = Label(root, text="띄어쓰기 제외한 글자수: 0, 띄어쓰기 포함한 글자수: 0")
status_bar.pack(side=BOTTOM, fill=X)
#메모장 실행
root.mainloop()
전체 코드를 업로드 했습니다.
오늘은 새로 만들기, 글자 수 자동으로 확인하기, 메모장 타이틀 바꾸기를 추가했습니다.
다음 포스팅은 다른 기술을 추가해 보도록 하겠습니다.
함께 보면 좋은 글
반응형
'etc[자료들] > 파이썬' 카테고리의 다른 글
파이썬 유튜브 다운로드 프로그램 만들기 #1 (0) | 2023.04.06 |
---|---|
파이썬 메모장 만들기 1편 (0) | 2023.04.04 |
파이썬 기초 알아보기 (0) | 2023.04.03 |
파이썬 자동화 pyautogui 기초 (0) | 2023.03.31 |