Ứng dụng To-Do giúp bạn quản lý cũng như theo dõi công việc hiệu quả. Vì thế, tại sao không thử phát triển một app lên danh sách việc cần làm bằng Python? Dưới đây là hướng dẫn chi tiết.
Mô đun Tkinter
Bạn có thể dùng Tkinter để tạo app To-Do. Tkinter, cho phép bạn tạo ra các ứng dụng desktop. Nó cung cấp một loạt widget như nút bấm, nhãn dán và hộp văn bản để việc phát triển ứng dụng dễ dàng hơn.
Để cài đặt Tkinter, mở một terminal và chạy:
pip install tkinter
Cách xây dựng ứng dụng To-Do bằng Python
Nhập mô đun Tkinter và khởi chạy cửa sổ gốc. Dùng hàm configure(), đặt màu nền. Ngoài ra, đặt cả tên và kích thước của cửa sổ.
from tkinter import *
from tkinter.font import Font
root = Tk()
root.configure(background="#A020f0")
root.title('To-Do List Application')
root.geometry("750x500")
Xác định một kiểu font và widget frame. Một frame hoạt động giống như container và chịu trách nhiệm sắp xếp vị trí của widget khác. Đặt cửa sổ chính mà bạn muốn đặt nó vào bên trong và thêm lề dọc là 10.
Xác định một widget listbox. Thành phần này hiện một danh sách các mục cho người dùng lựa chọn. Đặt cửa sổ chính bạn muốn đặt nó, kiểu font, chiều rộng, chiều cao, màu nền, độ rộng của đường viền và màu font. Ngoài ra, đặt độ dày của tiêu điểm tập trung, màu nền của nó khi được chọn và hình ảnh của dòng đang hoạt động là None.
Sắp xếp danh sách bằng cách đặt nó ở bên trái và yêu cầu nó lấp đầy bất kỳ không gian dư thừa ở cả hai hướng.
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)
Xác định thanh cuộn mà chương trình sẽ hiện ở bên phải của frame, lấp đầy bất kỳ khoảng trống dư thừa ở cả hai hướng. Dùng phương thức config() để liên kết thanh cuộn với widget listbox bạn đã xác định trước đó. Khi thiết lập giá trị của yscrollcommand là my_scrollbar.set, nó sẽ lấy vị trí hiện tại của thanh cuộn khi tương tác người dùng.
Khi đặt tham số dòng lệnh là my_list.yview, chuyển động của thanh cuộn được liên kết với các chức năng lên và xuống. Vì thế, khi người dùng tương tác với thanh cuộn, trình xem listbox cũng thay đổi theo.
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)
Xác định widget mục nhập để chấp nhận các tác vụ nhập từ người dùng. Chọn cửa sổ chính mà bạn muốn đặt nó vào bên trong, kiểu font, chiều rộng và màu nền. Sắp xếp nó bằng cách thêm lề 20 theo chiều dọc.
Xác định một khung để sắp xếp các nút bấm. Đặt chúng vào cửa sổ gốc và chọn màu nền. Sắp xếp frame với lề là 20 theo chiều dọc.
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)
Xác định một hàm, delete_item(). Chuyển tham số ANCHOR vào hàm xóa để loại bỏ mục được chọn khỏi danh sách.
def delete_item():
my_list.delete(ANCHOR)
Xác định một hàm, add_item(). Dùng hàm get() để trích xuất giá giá trị người dùng nhập tới cuối danh sách. Nếu danh sách này trống, nhân tố đã bổ sung sẽ trở thành mục nhập đầu tiên trong danh sách. Sau khi thêm nhân tố này vào danh sách, bạn cần loại bỏ nó khỏi widget nhập. Dùng hàm delete để loại bỏ text được chèn từ phần đầu tới cuối độ dài của nó.
def delete_item():
my_list.delete(ANCHOR)
Định nghĩa một hàm, cross_off_item(). Dùng phương thức item_config() để thay đổi màu font của mục được chọn trong danh sách thành màu nhạt, bạn đã gạch bỏ chúng. Xóa lựa chọn bạn đã thực hiện từ đầu cho tới cuối độ dài của nó.
def add_item():
my_list.insert(END, my_entry.get())
my_entry.delete(0, END)
Xác định một hàm, uncross_item(). Tương tự như hàm trên, thay đổi màu của nhiệm vụ được chọn thành màu gốc và loại bỏ lựa chọn hoàn toàn.
def cross_off_item():
my_list.itemconfig(my_list.curselection(), fg="#dedede")
my_list.selection_clear(0, END)
Xác định hàm delete_crossed(). Xác định một biến bộ đếm và lặp lại cho tới khi nó nhỏ hơn kích thước của danh sách. Nếu màu font chữ nhạt, xóa mục đó khỏi danh sách. Nếu không, hãy tiếp tục lặp lại bằng cách tăng biến bộ đếm.
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
Xác định 5 nút bấm: xóa, thêm, gạch chéo, bỏ gạch chéo và xóa gạch chéo. Đặt các nút bấm trong khung button bạn đã tạo từ đầu. Đặt text cho từng nút bấm sẽ hiển thị.
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"))
Sắp xếp các nút bấm bằng trình quản lý khung lưới trong một hàng và 5 cột. Đặt lề bằng 0 theo chiều ngang để phân bổ một số khoảng cách giữa các nút bấm.
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)
Hàm mainloop() báo cho Python chạy lặp sự kiện Tkinter và lắng nghe sự kiện cho tới khi bạn đóng cửa sổ.
root.mainloop()
Đặt toàn bộ code lại với nhau và không bỏ lỡ bất kỳ tác vụ nào bằng cách dùng ứng dụng To-Do List hiệu quả.
Kết quả ứng dụng To-Do bằng Python
Khi chạy chương trình trên, một cửa sổ sẽ hiện ra mà bạn có thể nhập nhiệm vụ muốn hoàn thành. Thêm nhiệm vụ và nhấn Add Item, bạn sẽ thấy nó hiện trên màn hình.
Khi chọn nhiệm vụ bằng chuột/bàn phím và click Cross Off Item, nhiệm vụ được chọn thay đổi màu và chuyển sang mờ.
Khi chọn mục được gạch chéo và click nút bấm Uncross Item, chương trình này làm nổi bật nhiệm vụ bằng màu gốc.
Khi click nút Delete Crossed, chương trình này xóa nhiệm vụ được gạch chéo. Khi chọn mục bất kỳ và click nút Delete Item, mục được chọn sẽ bị loại bỏ.
Trên đây là cách tạo app lên danh sách việc cần làm bằng Python. Hi vọng bài viết hữu ích với các bạn.