작업 관리용 할 일 목록 프로그램을 사용하면 작업을 보다 효과적으로 정리하고 관리할 수 있습니다. 일일 또는 주간 작업 목록을 만들고, 마감일과 미리 알림을 설정하고, 우선 순위를 지정하고, 진행 상황을 추적하고, 다른 사람들과 공유할 수 있습니다.

할 일 목록 앱을 사용하면 시간을 관리하고 생산성을 높이며 스트레스를 줄일 수 있습니다. 그렇다면 Python으로 어떻게 만들 수 있을까요?

Tkinter 모듈

Tkinter를 사용하여 To-Do 애플리케이션을 빌드할 수 있습니다. Tkinter를 사용하면 데스크톱 애플리케이션을 만들 수 있습니다. 버튼, 레이블, 텍스트 상자 등 다양한 위젯을 제공하여 앱을 쉽게 개발할 수 있습니다. Tkinter를 사용하여 개발할 수 있는 일부 애플리케이션에는 사전 앱, 음악 플레이어, 무게 변환 도구, 단어 맞추기 게임 등이 있습니다.

Tkinter를 설치하려면 터미널을 열고 실행하세요:

pip install tkinter

Python을 사용하여 할 일 애플리케이션을 빌드하는 방법

할 일 애플리케이션의 소스 코드는 이 GitHub 리포지토리에서 찾을 수 있습니다.

Tkinter 모듈을 가져와 루트 창을 초기화합니다. config() 함수를 사용하여 배경색을 설정합니다. 또한 창의 제목과 크기를 설정합니다.

from tkinter import *
from tkinter.font import Font

root = Tk()
root.configure(background="#A020f0")
root.title('To-Do List Application')
root.geometry("750x500")

글꼴 스타일과 프레임 위젯을 정의합니다. 프레임은 컨테이너 역할을 하며 다른 위젯의 위치를 정렬하는 역할을 합니다. 위젯을 배치할 부모 창을 설정하고 세로 패딩을 10으로 지정합니다.

목록 상자 위젯을 정의합니다. 이 컴포넌트는 사용자가 선택할 수 있는 항목 목록을 표시합니다. 배치할 상위 창, 글꼴 스타일, 너비, 높이, 배경색, 테두리 너비 및 글꼴 색상을 설정합니다. 또한 포커스 하이라이트의 두께, 선택 시 배경색, 활성 선의 모양을 없음 로 설정합니다.

목록을 왼쪽에 배치하고 양방향으로 여분의 공간을 채우도록 지시하여 목록을 정리합니다.

my_font = Font(family="Arial", size=22, weight="bold")
my_frame = Frame(root)
my_frame.pack(pady=10)

my_list = Listbox(my_frame, font=my_font, width=40, height=7, bg="#cf9fff", bd=0, fg="#5c4033", highlightthickness=0, selectbackground="#ff0000", activestyle="none")
my_list.pack(side=LEFT, fill=BOTH)

프로그램이 프레임의 오른쪽에 표시할 스크롤바를 정의하여 양방향으로 여분의 공간을 채웁니다. config() 메서드를 사용하여 스크롤바를 앞서 정의한 목록 상자 위젯에 바인딩합니다. yscrollcommand 의 값을 my_scrollbar.set 으로 설정하면 사용자 상호 작용 시 스크롤바의 현재 위치를 가져옵니다.

이 글도 확인해 보세요:  Rust의 제네릭 형식 알아보기

명령 매개변수를 my_list.yview 로 설정하면 스크롤바의 움직임이 위쪽 및 아래쪽 기능에 연결됩니다. 따라서 사용자가 스크롤 막대와 상호 작용할 때 목록 상자 보기가 그에 따라 변경됩니다.

my_scrollbar = Scrollbar(my_frame)
my_scrollbar.pack(side=RIGHT, fill=BOTH)
my_list.config(yscrollcommand=my_scrollbar.set)
my_scrollbar.config(command=my_list.yview)

사용자로부터 작업을 입력으로 받는 항목 위젯을 정의합니다. 위젯을 배치할 상위 창, 글꼴 스타일, 너비 및 배경색을 설정합니다. 세로 방향으로 20의 패딩을 추가하여 정리합니다.

버튼을 정리할 프레임을 정의합니다. 루트 창에 배치하고 배경색을 지정합니다. 세로 방향으로도 20의 패딩을 사용하여 프레임을 구성합니다.

my_entry = Entry(root, font=("Arial", 22), width=26, bg='#cf9fff')
my_entry.pack(pady=20)

button_frame = Frame(root, bg='#a020f0')
button_frame.pack(pady=20)

함수 delete_item() 을 정의합니다. ANCHOR 파라미터를 삭제 함수에 전달하여 선택한 항목을 목록에서 제거합니다.

def delete_item():
    my_list.delete(ANCHOR)

함수 정의, add_item() . get() 함수를 사용하여 사용자가 입력한 값을 목록의 끝으로 가져옵니다. 목록이 비어 있으면 추가된 요소가 목록의 첫 번째 항목이 됩니다. 목록에 요소를 추가한 후에는 항목 위젯에서 해당 요소를 제거해야 합니다. 삭제 기능을 사용하여 길이의 시작부터 끝까지 삽입된 텍스트를 제거합니다.

def add_item():
    my_list.insert(END, my_entry.get())
    my_entry.delete(0, END)

함수 정의, cross_off_item() . item_config() 메서드를 사용하여 목록에서 선택한 항목 작업의 글꼴 색상을 희미한 색상으로 변경하면 항목이 지워진 것입니다. 지금 선택한 항목을 처음부터 끝까지 지우십시오.

def cross_off_item():
    my_list.itemconfig(my_list.curselection(), fg="#dedede")
    my_list.selection_clear(0, END)

함수 정의, uncross_item() . 위의 함수와 마찬가지로 선택한 작업의 색상을 다시 원래대로 변경하고 선택 항목을 완전히 지웁니다.

def uncross_item():
    my_list.itemconfig(my_list.curselection(), fg="#5c4033")
    my_list.selection_clear(0, END)

함수 정의, delete_crossed() . 카운터 변수를 정의하고 목록의 크기보다 작아질 때까지 반복합니다. 항목의 글꼴 색상이 희미하면 목록에서 해당 항목을 삭제합니다. 그렇지 않으면 카운터 변수를 증가시켜 반복을 계속합니다.

def delete_crossed():
    count = 0

    while count < my_list.size():
        if my_list.itemcget(count, "fg") == "#dedede":
            my_list.delete(my_list.index(count))
        else:
            count += 1

삭제, 추가, 겹치기, 겹치기 해제, 겹친 항목 삭제 등 5개의 버튼을 정의합니다. 앞서 만든 버튼 프레임에 버튼을 배치합니다. 각 버튼에 표시할 텍스트, 버튼을 클릭하면 실행되는 기능, 배경색 및 글꼴 스타일을 설정합니다.

delete_button = Button(button_frame, text="Delete Item", command=delete_item, bg="#e7305b", font=("arial", 12, "bold"))
add_button = Button(button_frame, text="Add Item", command=add_item, bg="#e7305b", font=("arial", 12, "bold"))
cross_off_button = Button(button_frame, text="Cross Off Item", command=cross_off_item, bg="#e7305b", font=("arial", 12, "bold"))
uncross_button = Button(button_frame, text="Uncross Item", command=uncross_item, bg="#e7305b", font=("arial", 12, "bold"))
delete_crossed_button = Button(button_frame, text="Delete Crossed", command=delete_crossed, bg="#e7305b", font=("arial",12, "bold"))

그리드 관리자를 사용하여 버튼을 하나의 행과 다섯 개의 열로 구성합니다.

delete_button.grid(row=0, column=0)
add_button.grid(row=0, column=1, padx=20)
cross_off_button.grid(row=0, column=2)
uncross_button.grid(row=0, column=3, padx=20)
delete_crossed_button.grid(row=0, column=4)

가로 방향으로 0의 패딩을 설정하여 버튼 사이에 약간의 간격을 할당합니다. mainloop() 함수는 Python이 Tkinter 이벤트 루프를 실행하고 창을 닫을 때까지 이벤트를 기다리도록 지시합니다.

root.mainloop()

이 효율적인 할 일 목록 애플리케이션을 사용하여 모든 코드를 통합하고 어떤 작업도 놓치지 마세요.

이 글도 확인해 보세요:  슬랙에서 나만의 사용자 지정 슬래시 명령 만들기

파이썬을 사용한 할 일 목록 프로그램 결과

위 프로그램을 실행하면 완료하려는 작업을 입력할 수 있는 창이 나타납니다. 작업을 추가하고 항목 추가 버튼을 누르면 해당 작업이 화면에 추가됩니다.

마우스/키보드로 작업을 선택하고 항목 끄기 버튼을 클릭하면 선택한 작업의 색이 바뀌고 희미해집니다.

교차된 항목을 선택하고 항목 교차 해제 버튼을 클릭하면 프로그램이 작업을 원래 색상으로 다시 강조 표시합니다.

교차된 항목 삭제 버튼을 클릭하면 프로그램이 교차된 작업을 삭제합니다. 항목을 선택하고 항목 삭제 버튼을 클릭하면 선택한 항목이 제거됩니다.

Python을 사용하여 생산성을 높일 수 있는 프로그램 만들기

사용자가 어떤 앱에서 얼마나 많은 시간을 보내는지 추적하는 RescueTime과 같은 애플리케이션을 만들 수 있습니다. 이러한 앱은 어떤 웹 사이트가 가장 산만하게 만드는지 알아내는 데 도움이 될 수 있습니다. 이 외에도 트렐로에서 영감을 얻어 할 일 목록, 마감일, 미리 알림이 있는 보드를 만들 수 있습니다.

특별히 디자인된 재생 목록을 재생하는 음악 애플리케이션은 사용자가 업무에 집중하고 집중할 수 있도록 도와줍니다. 로그인 프로세스 및 데스크톱과 상호 작용하는 스크립트와 같은 반복적인 작업을 수행하기 위해 GUI 프로그램을 자동화할 수도 있습니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.