+7 (495) 107-75-45 Подключение
+7 (495) 107-75-47 Тех. поддержка 24/7
Пример
23.11.2024

Разработка системы управления задачами на Python с использованием Tkinter

В этой статье мы создадим настольное приложение для управления задачами с использованием библиотеки Tkinter. Приложение будет включать следующие функции:

  1. Добавление новых задач.
  2. Отображение списка задач.
  3. Удаление выбранных задач.

Все шаги будут сопровождаться объяснениями и комментариями. В конце статьи будет предоставлен полный код приложения.

Шаг 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

Заключение

Теперь у вас есть функциональное настольное приложение для управления задачами с графическим интерфейсом! Приложение умеет добавлять, удалять, сохранять и загружать задачи. Это базовая версия, которую можно расширить, добавив более сложные функции, такие как сортировка, фильтрация задач или интеграция с базой данных.