발전을 위한 기록

[Python] 파이썬으로 달력 만들기4 - <메모 검색> 본문

프로그래밍/파이썬

[Python] 파이썬으로 달력 만들기4 - <메모 검색>

릴릴2 2024. 1. 29. 22:57

이전 포스팅에서 만든 달력에 메모 검색 기능을 추가한 코드입니다!


❗ 모듈 설치가 필요합니다 

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

pip install tkcalendar

전체 코드

import tkinter as tk
from tkcalendar import Calendar
from tkinter import messagebox

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]}")

def search_memo():
    search_query = search_entry.get()
    if not search_query:
        messagebox.showinfo("검색", "검색어를 입력해주세요.")
        return

    matching_memos = []
    for date, memo in memos.items():
        if search_query.lower() in memo.lower():
            matching_memos.append(f"{date}: {memo}")

    if matching_memos:
        result_message = "\n\n".join(matching_memos)
        messagebox.showinfo("검색 결과", f"일치하는 메모를 찾았습니다.:\n\n{result_message}")
    else:
        messagebox.showinfo("검색 결과", "일치하는 메모가 없습니다.")

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)

# 검색 필드 및 버튼
search_entry = tk.Entry(root, width=30)
search_entry.pack(pady=5)

search_button = tk.Button(root, text="메모 검색", command=search_memo)
search_button.pack(pady=5)

root.mainloop()

검색 기능을 위한 코드

 

1. 검색 필드 및 버튼 추가

search_entry = tk.Entry(root, width=30)
search_entry.pack(pady=5)
search_button = tk.Button(root, text="메모 검색", command=search_memo)
search_button.pack(pady=5)
  • 사용자가 메모를 쉽게 검색할 수 있도록 검색 필드와 버튼을 추가합니다.

2. 검색 함수

def search_memo():
    search_query = search_entry.get()
    if not search_query:
        messagebox.showinfo("검색", "검색어를 입력해주세요.")
        return

    matching_memos = []
    for date, memo in memos.items():
        if search_query.lower() in memo.lower():
            matching_memos.append(f"{date}: {memo}")

    if matching_memos:
        result_message = "\n\n".join(matching_memos)
        messagebox.showinfo("검색 결과", f"일치하는 메모:\n\n{result_message}")
    else:
        messagebox.showinfo("검색 결과", "일치하는 메모가 없습니다.")
  • search_entry.get()
    • get() 메서드는 Entry 위젯에서 사용자가 입력한 텍스트를 가져옵니다.
    • search_query 변수에 사용자의 입력 값을 저장합니다.
  • if not search_query
    • 이 if 문은 사용자가 검색어를 입력했는지 확인합니다.
    • 검색어가 비어있으면, messagebox.showinfo를 사용하여 사용자에게 검색어 입력을 요청하는 메시지를 표시합니다.
    • return 문은 함수의 나머지 부분이 실행되지 않도록 합니다.
  • 리스트 초기화 (matching_memos = [])
    • matching_memos는 일치하는 메모를 저장하기 위한 빈 리스트입니다.
    • 검색 결과를 저장하기 위해 사용됩니다.
  • if matching_memos
    • 이 if 문은 일치하는 메모가 하나라도 있는지 확인합니다.
    • join 메서드를 사용하여 리스트에 저장된 메모를 문자열로 결합합니다.
    • 일치하는 메모가 있으면, messagebox.showinfo로 결과를 표시합니다.
  • else
    • if 문의 조건이 거짓일 때 실행됩니다.
    • 일치하는 메모가 없을 경우, 사용자에게 알리는 메시지를 표시합니다.

결과

검색어와 메모가 일치할 경우 팝업창으로 날짜확인이 가능합니다.

 


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

기본 달력 출력

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

 

달력에 메모장 추가

https://riwltnchgo.tistory.com/114

 

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

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

riwltnchgo.tistory.com

 

728x90