Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

파이썬 스크립트

Python으로 나만의 일정 관리 앱 만들기: SQLite와 Tkinter 활용하기

Billcorea 2025. 3. 21. 15:43
반응형

Python으로 나만의 일정 관리 앱 만들기: SQLite와 Tkinter 활용하기

 

실행이미지

 

 

1. 누가?

일정을 체계적으로 관리하거나 Python 프로그래밍 실력을 키우고 싶은 누구나 참여할 수 있습니다. 이 프로젝트는 특히 Python 초보자에게 적합하며, SQLite와 Tkinter의 기본을 익히기에 좋은 기회입니다.


2. 무엇을?

SQLite와 Tkinter를 활용하여 간단한 일정 관리 앱을 구현합니다. 주요 기능은 다음과 같습니다:

  • 일정 추가: 새로운 일정을 데이터베이스에 저장
  • 일정 조회: 저장된 일정을 목록으로 확인
  • 일정 삭제: 필요하지 않은 일정 제거
  • GUI 추가: Tkinter를 사용해 직관적인 그래픽 사용자 인터페이스 구현

3. 언제?

이 프로젝트는 시간을 절약하고 실력을 기르기 위해 언제든 시작할 수 있습니다. 특히 Python 학습 과정 중 직접적인 응용 사례가 필요할 때 유용합니다.


4. 어디서?

  • 로컬 컴퓨터에서 Python을 설치한 후, Windows, Mac, Linux 등 다양한 플랫폼에서 실행할 수 있습니다.
  • Python 인터프리터와 SQLite를 기본으로 사용합니다.

5. 왜?

  • 효율적 시간 관리: 이 앱으로 중요한 일정을 잊지 않고 체계적으로 관리할 수 있습니다.
  • 실용적 학습: SQLite를 사용한 데이터베이스 처리와 Tkinter GUI 개발을 통해 Python 기술을 강화합니다.
  • 창의적 프로젝트: 기본적인 일정 관리 앱을 자신만의 스타일로 커스터마이즈 할 수 있습니다.

6. 어떻게?

  • SQLite 데이터베이스 생성 일정 데이터를 저장할 데이터베이스를 생성합니다. SQLite는 Python 내장 라이브러리라 추가 설치가 필요 없습니다.
import sqlite3

def initialize_database():
    conn = sqlite3.connect('schedule.db')
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS schedules (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT NOT NULL,
            description TEXT,
            date TEXT NOT NULL
        )
    ''')
    conn.commit()
    conn.close()​

 

  • 기본 CRUD 기능 구현 사용자가 일정을 추가, 조회, 삭제할 수 있도록 함수들을 구현합니다.
def add_schedule(title, description, date):
    conn = sqlite3.connect('schedule.db')
    cursor = conn.cursor()
    cursor.execute('INSERT INTO schedules (title, description, date) VALUES (?, ?, ?)', (title, description, date))
    conn.commit()
    conn.close()

def view_schedules():
    conn = sqlite3.connect('schedule.db')
    cursor = conn.cursor()
    cursor.execute('SELECT id, title, date FROM schedules ORDER BY date')
    rows = cursor.fetchall()
    conn.close()
    return rows

def delete_schedule(schedule_id):
    conn = sqlite3.connect('schedule.db')
    cursor = conn.cursor()
    cursor.execute('DELETE FROM schedules WHERE id = ?', (schedule_id,))
    conn.commit()
    conn.close()

 

  • Tkinter GUI 개발 사용자 인터페이스를 만들어 일정을 더 직관적으로 관리할 수 있도록 합니다.
from tkinter import Tk, Label, Entry, Button, Listbox, END, messagebox

def load_schedules():
    listbox_schedules.delete(0, END)
    schedules = view_schedules()
    for schedule in schedules:
        listbox_schedules.insert(END, f"{schedule[0]}. {schedule[1]} ({schedule[2]})")

def gui_add_schedule():
    title = entry_title.get()
    description = entry_description.get()
    date = entry_date.get()
    if not title or not date:
        messagebox.showerror("입력 오류", "제목과 날짜는 필수 입력 항목입니다.")
        return
    add_schedule(title, description, date)
    load_schedules()
    entry_title.delete(0, END)
    entry_description.delete(0, END)
    entry_date.delete(0, END)
    messagebox.showinfo("성공", "일정이 추가되었습니다!")

root = Tk()
root.title("일정 관리 앱")

Label(root, text="제목").grid(row=0, column=0)
entry_title = Entry(root)
entry_title.grid(row=0, column=1)

Label(root, text="설명").grid(row=1, column=0)
entry_description = Entry(root)
entry_description.grid(row=1, column=1)

Label(root, text="날짜 (YYYY-MM-DD)").grid(row=2, column=0)
entry_date = Entry(root)
entry_date.grid(row=2, column=1)

Button(root, text="일정 추가", command=gui_add_schedule).grid(row=3, column=0, columnspan=2)
listbox_schedules = Listbox(root, width=50)
listbox_schedules.grid(row=4, column=0, columnspan=2)

initialize_database()
load_schedules()

root.mainloop()

이 코드를 기반으로 자신의 스타일에 맞게 기능을 확장하거나 디자인을 개선할 수 있습니다. 예를 들어, 알림 기능이나 일정 검색 기능을 추가해볼 수 있습니다. 자신만의 독창적인 일정 관리 앱을 만들어 보세요! 😊

 

반응형