파이썬으로 간단한 To-Do 리스트 만들기
안녕하세요! 오늘은 파이썬을 활용하여 간단하게 To-Do 리스트 애플리케이션을 제작해보도록 하겠습니다. 이 프로젝트는 GUI 환경에서 tkinter 라이브러리를 사용하여 시각적으로 직관적인 인터페이스를 구현할 것입니다. 또한, 이전에 구성한 데이터베이스를 그대로 활용하여 작업 내용을 저장하게 됩니다.
1. 프로젝트 개요 및 준비사항
To-Do 리스트는 일상에서 수행해야 할 작업들을 정리하고 관리하는 데 유용한 도구입니다. 본 프로젝트에서는 사용자가 계획한 작업을 입력하고, 해당 작업의 완료 여부를 표시할 수 있는 기능을 구현할 것입니다.
기본적인 기능은 다음과 같습니다:
- 작업 목록 표시
- 작업 추가
- 작업 삭제
- 작업 완료 상태 변경
2. GUI 인터페이스 설계
우선 프로그램의 시각적 요소를 여러 가지 구성 요소로 나누어 설계해보겠습니다. 우선, tkinter 라이브러리를 설치해주셔야 합니다. 터미널에서 다음과 같은 명령어를 입력하여 설치할 수 있습니다.
apt-get install python3-tk
설치가 완료되면 기본적인 창과 함께 다음의 구성 요소를 포함한 인터페이스를 만들어 나갈 것입니다:
- 작업 목록을 표시하는 리스트 박스
- 작업 입력을 위한 텍스트 박스
- 작업 추가 및 삭제를 위한 버튼들
3. 코드 구현
이제 본격적으로 코딩을 시작해보겠습니다. tkinter 라이브러리를 임포트한 후, GUI 창을 설정하는 객체를 생성합니다. 다음과 같이 필요한 라이브러리 선언을 진행합니다.
import tkinter as tk
import pymysql
그 후, 창의 제목과 크기, 리사이징 기능을 설정한 후, GUI의 기본 구조를 구성해야 합니다.
root = tk.Tk()
root.title("To-Do List")
root.geometry("400x400")
그 다음, 리스트 박스를 가진 프레임을 생성하고, 이 프레임에 스크롤바와 리스트 박스를 추가합니다. 이 리스트 박스에서는 완료된 작업과 미완료 작업의 상태를 보여줄 것입니다.
frame = tk.Frame(root)
frame.pack()
scrollbar = tk.Scrollbar(frame)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox = tk.Listbox(frame, yscrollcommand=scrollbar.set)
listbox.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar.config(command=listbox.yview)
4. 작업 추가 및 삭제 기능 구현하기
작업을 추가하기 위한 입력 박스를 만들고, 이를 위한 버튼을 설정합니다. 사용자가 입력한 내용은 리스트 박스의 가장 하단에 추가되도록 하겠습니다. 입력된 내용은 데이터베이스에 저장될 것입니다.
input_box = tk.Entry(root)
input_box.pack()
def add_task():
task = input_box.get()
listbox.insert(tk.END, task)
input_box.delete(0, tk.END) # 입력 박스 초기화
add_button = tk.Button(root, text="추가", command=add_task)
add_button.pack()
작업을 삭제하는 기능 역시 필요합니다. 가장 최근에 추가된 작업부터 삭제할 수 있는 버튼을 생성하게 됩니다.
def delete_task():
selected_task_index = listbox.curselection() # 선택된 작업의 인덱스
if selected_task_index:
listbox.delete(selected_task_index) # 리스트 박스에서 삭제
delete_button = tk.Button(root, text="삭제", command=delete_task)
delete_button.pack()
5. 완료 상태 변경 기능 추가하기
작업의 완료 여부를 표시하기 위해, 리스트 박스에서 선택된 작업의 색상을 변경하는 기능을 추가해야 합니다. 이를 위해 새로운 버튼과 관련된 명령어를 설정하겠습니다.
def mark_completed():
selected_task_index = listbox.curselection()
if selected_task_index:
listbox.itemconfig(selected_task_index, {'fg': 'gray'}) # 색상 변경
complete_button = tk.Button(root, text="완료", command=mark_completed)
complete_button.pack()
6. 데이터베이스와의 연동
이제 코드를 작성한 대로 작업이 추가될 때마다 데이터베이스에 정보를 저장하는 기능을 구현해야 합니다. pymysql을 사용하여 데이터베이스에 연결합니다. 다음과 같이 연결 객체를 생성합니다.
connection = pymysql.connect(
host='localhost',
user='root',
password='비밀번호',
db='TodoDB'
)
작업이 추가될 때마다 이 데이터베이스에 정보를 삽입하고, 목록을 표시할 때 데이터베이스에서 내용을 조회하여 리스트 박스를 업데이트해야 합니다. 조회 함수와 삽입 함수를 정의하겠습니다.
def add_task_to_db(task):
with connection.cursor() as cursor:
cursor.execute("INSERT INTO dataTBL (contents, do) VALUES (%s, %s)", (task, 0))
connection.commit()
작업을 추가할 때 위의 함수를 호출하여 데이터베이스에 내용을 추가하도록 합니다. 비슷한 방식으로 작업 삭제와 상태 변경에 대해서도 데이터베이스와 연동된 함수를 만들어주어야 합니다.
7. 프로그램 실행 확인
모든 코드를 구현한 후, 마지막으로 프로그램을 실행하여 GUI가 잘 작동하는지 확인해야 합니다. 모든 GUI 구성 요소와 데이터베이스의 연동이 원활히 이루어져야 합니다.
root.mainloop() # GUI 메인 루프 시작
모든 단계가 마무리되면, 여러분은 간단한 To-Do 리스트 애플리케이션을 완성하게 됩니다. 이 애플리케이션에서는 작업을 추가하고 삭제하고, 상태를 관리할 수 있을 뿐만 아니라, 이를 데이터베이스와 연동해 지속적으로 관리할 수 있습니다.
결론
이번 포스트에서는 파이썬을 이용하여 간단한 To-Do 리스트 애플리케이션을 제작하는 과정을 살펴보았습니다. tkinter를 사용한 GUI 환경에서 사용자 친화적인 인터페이스를 통해 작업을 관리하는 방법을 배웠습니다. 이 프로젝트를 통해 데이터베이스와 연동된 애플리케이션을 만드는 기초를 다질 수 있었던 것 같아 기쁩니다. 다음에는 이 프로젝트를 더 발전시켜 복잡한 기능들을 추가해보도록 하겠습니다!
자주 찾으시는 질문 FAQ
To-Do 리스트 애플리케이션은 어떻게 사용하나요?
애플리케이션을 실행한 후, 작업을 입력하고 ‘추가’ 버튼을 클릭하면 됩니다. 추가된 작업은 리스트에 표시되며, 완료 상태를 변경할 수 있습니다.
작업을 삭제하는 방법은 무엇인가요?
작업 리스트에서 삭제하고 싶은 항목을 선택한 후, ‘삭제’ 버튼을 클릭하시면 해당 작업이 삭제됩니다.
작업의 완료 여부를 어떻게 표시하나요?
리스트에서 완료된 작업을 선택하고 ‘완료’ 버튼을 누르면 해당 작업의 색상이 회색으로 변경되어 완료 상태가 표시됩니다.