발전을 위한 기록

[Python] 파이썬으로 달력 만들기3 - <메모 저장> 본문

프로그래밍/파이썬

[Python] 파이썬으로 달력 만들기3 - <메모 저장>

릴릴2 2024. 1. 28. 22:42

이전 포스팅에서 만든 달력에 메모장을 추가하는 코드입니다!

기본 달력을 만드는 방법은 아래 게시물을 참고 해주세요!

https://riwltnchgo.tistory.com/112

 

[Python] 파이썬으로 달력 만들기1 - <GUI>

파이썬을 사용하여 달력을 표시하는 GUI 프로그램 입니다. 이 예제에서는 tkinter 라이브러리와 tkcalendar 모듈을 사용합니다. 1. 필요한 모듈 설치하기 tkcalendar 모듈을 설치해야 합니다. pip install tkca

riwltnchgo.tistory.com


❗ 모듈 설치가 필요합니다 

Tkinter용 달력 위젯을 제공하는 별도의 모듈입니다.

pip install tkcalendar

코드

import tkinter as tk
from tkcalendar import Calendar

def on_date_select(event):
    # 선택된 날짜를 가져옴
    selected_date = cal.selection_get()
    
    # 해당 날짜의 메모를 텍스트 입력 필드에 표시
    memo_entry.delete(1.0, tk.END)  # 기존 텍스트를 지움
    memo_entry.insert(tk.END, memos.get(selected_date, ""))

def save_memo():
    # 메모 저장
    selected_date = cal.selection_get()
    memos[selected_date] = memo_entry.get(1.0, tk.END).strip()
    print(f"날짜: {selected_date}, 메모: {memos[selected_date]}")

root = tk.Tk()
root.title("한국어 캘린더")

# 메모를 저장할 딕셔너리
memos = {}

# 사용자 정의 글꼴 설정
custom_font = ('Arial', 12, 'bold')

# 캘린더 위젯 생성 및 스타일 설정
cal = Calendar(root, selectmode='day', font=custom_font,
               background='white',
               foreground='black',
               bordercolor='gray',
               headersbackground='#6096B4',
               headersforeground='white',
               selectbackground='#27374D',
               selectforeground='white',
               normalbackground='white',
               normalforeground='black',
               weekendbackground='#BDDCD6',
               weekendforeground='black',
               othermonthforeground='gray50',
               othermonthbackground='white',
               othermonthwebackground='#EEE9DA')

cal.pack(pady=20)
cal.bind("<<CalendarSelected>>", on_date_select)

# 메모 입력을 위한 텍스트 입력 필드
memo_entry = tk.Text(root, height=5, width=50)
memo_entry.pack(pady=5)

# 메모 저장 버튼
save_button = tk.Button(root, text="메모 저장", command=save_memo)
save_button.pack(pady=5)

root.mainloop()

 

 


메모 기능을 위한 코드

1. 메모 저장을 위한 사전

memos = {}
  • 메모스는 날짜와 관련된 메모(메모)를 저장하는 데 사용되는 사전입니다.
  • 이 사전의 각 키는 날짜를 나타내며 값은 해당 날짜에 대한 메모입니다.
  • 달력 날짜를 기준으로 메모를 저장하고 검색하는 방법을 제공하므로 메모 기능에 필수적입니다.

2.날짜 선택을 처리하는 기능

def on_date_select(event):
    selected_date = cal.selection_get()
    memo_entry.delete(1.0, tk.END)
    memo_entry.insert(tk.END, memos.get(selected_date, ""))
  • on_date_select는 사용자가 달력에서 날짜를 선택하면 호출되는 함수입니다.
  • cal.selection_get()은 달력에서 현재 선택된 날짜를 검색합니다.
  • memo_entry.delete(1.0, tk.END)는 메모 입력 필드의 기존 텍스트를 지웁니다.
  • memo_entry.insert(tk.END, memos.get(selected_date, ""))는 가능한 경우 선택한 날짜와 관련된 메모를 텍스트 필드에 삽입합니다.

3. 메모 저장 기능

def save_memo():
    selected_date = cal.selection_get()
    memos[selected_date] = memo_entry.get(1.0, tk.END).strip()
    print(f"Date: {selected_date}, Memo: {memos[selected_date]}")
  • '메모 저장' 버튼을 클릭하면 'save_memo'가 호출됩니다.
  • memo_entry의 텍스트를 선택한 날짜를 기준으로 memos 사전에 저장합니다.
  • memo_entry.get(1.0, tk.END).strip()은 메모 입력 필드에서 텍스트를 검색하고 자릅니다.
  • 그러면 저장된 날짜와 메모가 콘솔에 출력되므로 확인 및 디버깅에 유용할 수 있습니다.

4. 메모를 위한 텍스트 입력 필드 구성

memo_entry = tk.Text(root, height=5, width=50)
memo_entry.pack(pady=5)
  • memo_entry는 사용자가 메모를 작성할 수 있는 텍스트 입력 필드(Tkinter의 Text 위젯 사용)입니다.
  • 특정 높이와 너비로 구성되어 메인 창에 추가됩니다.
  • 이 위젯은 사용자가 특정 날짜에 메모를 입력하는 곳입니다.

5. 메모 저장 버튼

save_button = tk.Button(root, text="Save Memo", command=save_memo)
save_button.pack(pady=5)
  • save_button은 "메모 저장"이라는 라벨이 붙은 버튼 위젯입니다.
  • command=save_memo 인수는 이 버튼을 save_memo 기능에 연결하므로 버튼을 클릭하면 현재 메모를 저장하는 기능이 트리거됩니다.
  • 이 버튼은 사용자가 자신의 작업을 저장할 수 있는 대화형 요소를 제공합니다.

결과


파이썬으로 달력 만들기 이전 포스팅

기본 달력 출력

https://riwltnchgo.tistory.com/112

 

[Python] 파이썬으로 달력 만들기1 - <GUI>

파이썬을 사용하여 달력을 표시하는 GUI 프로그램 입니다. 이 예제에서는 tkinter 라이브러리와 tkcalendar 모듈을 사용합니다. 1. 필요한 모듈 설치하기 tkcalendar 모듈을 설치해야 합니다. pip install tkca

riwltnchgo.tistory.com

 

달력 색상 바꾸기

https://riwltnchgo.tistory.com/113

 

[Python] 파이썬으로 달력 만들기2 - <색상 바꾸기>

이전 포스팅에서 만든 달력의 색상을 바꾸는 코드입니다! 기본 달력을 만드는 방법은 아래 게시물을 참고 해주세요! https://riwltnchgo.tistory.com/112 [Python] 파이썬으로 달력 만들기1 - 파이썬을 사용

riwltnchgo.tistory.com

 

728x90