본문 바로가기
code/Python

Python으로 ToDoList 만들기

by 0x01 2023. 12. 31.

Project : ToDoList

 

준비물 : Python, Visual Studio Code

 

Python과 Visual Studio Code를 이용하여 Todolist 를 만들어보자.

 

chatgpt에게 모르는 것들을 물어가면 완성한 코드를 먼저 보자.

 

import tkinter as tk
from tkinter import messagebox
from datetime import datetime

class TodoApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Todo List App")

        # Header labels
        self.header_frame = tk.Frame(root)
        self.header_frame.pack(padx=10, pady=5)
        tk.Label(self.header_frame, text="No", width=10).pack(side="left")
        tk.Label(self.header_frame, text="Todo", width=30).pack(side="left")
        tk.Label(self.header_frame, text="Time", width=20).pack(side="left")
        tk.Label(self.header_frame, text="Actions", width=10).pack(side="left")

        # Main frame for todo items
        self.main_frame = tk.Frame(root)
        self.main_frame.pack(padx=10, pady=5)

        self.todos = []

        self.entry = tk.Entry(root, width=60)
        self.entry.pack(pady=5)
        self.entry.bind("<Return>", self.add_todo)

        self.add_button = tk.Button(root, text="Add Todo", command=self.add_todo)
        self.add_button.pack(pady=5)

    def add_todo(self, event=None):
        todo = self.entry.get()
        if todo:
            current_time = datetime.now().strftime("%m/%d %H:%M")
            todo_frame = tk.Frame(self.main_frame)
            todo_frame.pack(anchor="w")
            
            tk.Label(todo_frame, text=str(len(self.todos) + 1), width=10).pack(side="left")
            tk.Label(todo_frame, text=todo, width=30).pack(side="left")
            tk.Label(todo_frame, text=current_time, width=20).pack(side="left")
            
            delete_button = tk.Button(todo_frame, text="Delete", command=lambda: self.delete_todo(todo_frame))
            delete_button.pack(side="left")

            self.todos.append((todo_frame, todo, current_time))
            self.entry.delete(0, "end")

    def delete_todo(self, todo_frame):
        todo_frame.destroy()
        self.todos.remove(todo_frame)

if __name__ == "__main__":
    root = tk.Tk()
    app = TodoApp(root)
    root.mainloop()

 

 코드를 실행하면 ToDoList 프로그램 창이 열린다. 

 

 

add todo 버튼 위에 글자를 적는 곳에 일정을 적으면,

 

 

번호 / 입력일정 / 입력시간 / 삭제버튼 순으로 생성이 된다.

 

 

여러 일정을 추가할 수가 있으면 일정을 완료했을 경우 Delete 버튼을 이용하여 삭제도 가능하다.

 

 

간단하게 만들수 있으며, 추가적인 기능을 구현을 해보고,

해당 코드를 암기하고 설명 할 수 있을 때까지 반복 작성 하여 내것으로 만들어 보자.

 

Project_ToDoList 끝

 

Code : https://github.com/themeg87/Python/tree/main/Project_ToDo

'code > Python' 카테고리의 다른 글

Python으로 Youtube_Downloader만들기  (0) 2024.01.06