Разработка системы управления задачами на Python с использованием Tkinter
В этой статье мы создадим настольное приложение для управления задачами с использованием библиотеки Tkinter. Приложение будет включать следующие функции:
- Добавление новых задач.
- Отображение списка задач.
- Удаление выбранных задач.
Все шаги будут сопровождаться объяснениями и комментариями. В конце статьи будет предоставлен полный код приложения.
Шаг 1: Установка окружения
Убедитесь, что у вас установлен Python (версия 3.6 или выше). Tkinter входит в стандартную библиотеку Python, поэтому дополнительных установок не требуется.
Создайте и активируйте виртуальное окружение:
python3 -m venv venv source venv/bin/activate # Linux/MacOS venv\Scripts\activate # Windows
Шаг 2: Импорт библиотек и создание главного окна
Создадим минимальный интерфейс приложения:
import tkinter as tk from tkinter import messagebox # Создаем главное окно root = tk.Tk() root.title("Task Manager") root.geometry("400x400") # Метка заголовка header_label = tk.Label(root, text="Список задач", font=("Arial", 16)) header_label.pack(pady=10) # Запуск главного цикла root.mainloop()
Этот код создает главное окно с заголовком “Список задач”.
Шаг 3: Добавление виджетов для ввода и отображения задач
Теперь добавим поле для ввода задач, кнопку “Добавить” и список для отображения задач.
# Поле для ввода задачи task_entry = tk.Entry(root, font=("Arial", 12)) task_entry.pack(pady=10, fill=tk.X, padx=10) # Список задач task_listbox = tk.Listbox(root, font=("Arial", 12), height=10) task_listbox.pack(pady=10, fill=tk.BOTH, padx=10, expand=True) # Функция для добавления задачи def add_task(): task = task_entry.get() if task.strip(): task_listbox.insert(tk.END, task) task_entry.delete(0, tk.END) else: messagebox.showwarning("Ошибка", "Введите задачу") # Кнопка для добавления задачи add_button = tk.Button(root, text="Добавить задачу", command=add_task, font=("Arial", 12)) add_button.pack(pady=5)
Теперь приложение позволяет добавлять задачи в список.
Шаг 4: Удаление задач
Добавим функциональность для удаления выбранных задач.
# Функция для удаления задачи def delete_task(): try: selected_task_index = task_listbox.curselection()[0] task_listbox.delete(selected_task_index) except IndexError: messagebox.showwarning("Ошибка", "Выберите задачу для удаления") # Кнопка для удаления задачи delete_button = tk.Button(root, text="Удалить задачу", command=delete_task, font=("Arial", 12)) delete_button.pack(pady=5)
Эта функция позволяет удалять выделенные задачи из списка.
Шаг 5: Сохранение и загрузка задач
Для сохранения задач в файл и загрузки их при запуске приложения добавим следующие функции:
import os # Имя файла для сохранения задач TASK_FILE = "tasks.txt" # Функция для сохранения задач def save_tasks(): with open(TASK_FILE, "w") as f: tasks = task_listbox.get(0, tk.END) for task in tasks: f.write(task + "\n") # Функция для загрузки задач def load_tasks(): if os.path.exists(TASK_FILE): with open(TASK_FILE, "r") as f: tasks = f.readlines() for task in tasks: task_listbox.insert(tk.END, task.strip()) # Загрузка задач при запуске load_tasks() # Сохранение задач при закрытии приложения root.protocol("WM_DELETE_WINDOW", lambda: (save_tasks(), root.destroy()))
Теперь задачи сохраняются в файл tasks.txt
и загружаются при следующем запуске.
Шаг 6: Финальный код
import tkinter as tk from tkinter import messagebox import os # Имя файла для сохранения задач TASK_FILE = "tasks.txt" # Функция для добавления задачи def add_task(): task = task_entry.get() if task.strip(): task_listbox.insert(tk.END, task) task_entry.delete(0, tk.END) else: messagebox.showwarning("Ошибка", "Введите задачу") # Функция для удаления задачи def delete_task(): try: selected_task_index = task_listbox.curselection()[0] task_listbox.delete(selected_task_index) except IndexError: messagebox.showwarning("Ошибка", "Выберите задачу для удаления") # Функция для сохранения задач def save_tasks(): with open(TASK_FILE, "w") as f: tasks = task_listbox.get(0, tk.END) for task in tasks: f.write(task + "\n") # Функция для загрузки задач def load_tasks(): if os.path.exists(TASK_FILE): with open(TASK_FILE, "r") as f: tasks = f.readlines() for task in tasks: task_listbox.insert(tk.END, task.strip()) # Создаем главное окно root = tk.Tk() root.title("Task Manager") root.geometry("400x400") # Метка заголовка header_label = tk.Label(root, text="Список задач", font=("Arial", 16)) header_label.pack(pady=10) # Поле для ввода задачи task_entry = tk.Entry(root, font=("Arial", 12)) task_entry.pack(pady=10, fill=tk.X, padx=10) # Список задач task_listbox = tk.Listbox(root, font=("Arial", 12), height=10) task_listbox.pack(pady=10, fill=tk.BOTH, padx=10, expand=True) # Кнопка для добавления задачи add_button = tk.Button(root, text="Добавить задачу", command=add_task, font=("Arial", 12)) add_button.pack(pady=5) # Кнопка для удаления задачи delete_button = tk.Button(root, text="Удалить задачу", command=delete_task, font=("Arial", 12)) delete_button.pack(pady=5) # Загрузка задач при запуске load_tasks() # Сохранение задач при закрытии приложения root.protocol("WM_DELETE_WINDOW", lambda: (save_tasks(), root.destroy())) # Запуск главного цикла root.mainloop()
Убедитесь, что у вас установлены библиотеки Tk
sudo apt-get install python3-tk
Если вышеуказанная команда не решит проблему, попробуйте установить саму библиотеку Tk:
sudo apt-get install tk
Заключение
Теперь у вас есть функциональное настольное приложение для управления задачами с графическим интерфейсом! Приложение умеет добавлять, удалять, сохранять и загружать задачи. Это базовая версия, которую можно расширить, добавив более сложные функции, такие как сортировка, фильтрация задач или интеграция с базой данных.