Глава 16 · Создаём классные приложения с Tkinter

Открываем и сохраняем файлы: filedialog и pathlib

Диалог выбора файла отдаёт путь — а дальше работает всё, что мы уже знаем из главы 15.

Прямая связь с главой 15: диалог выбора файла отдаёт путь, а дальше работает всё то же pathlib.

filedialog.py
from tkinter import filedialog
from pathlib import Path

filename = filedialog.askopenfilename(filetypes=[("Текстовые файлы", "*.txt")])
if not filename:
    pass   # пользователь нажал «Отмена» — ничего не делаем
else:
    text = Path(filename).read_text(encoding="utf-8")
Не забывайте про отмену
Если пользователь закрыл диалог без выбора файла, askopenfilename() вернёт пустую строку, а не None и не путь. Попытка сразу открыть Path("") — частая ошибка. Всегда проверяйте результат перед использованием: if not filename: return.

Сохранение файла

filedialog_save.py
filename = filedialog.asksaveasfilename(defaultextension=".txt")
if filename:
    Path(filename).write_text(text_widget.get("1.0", "end-1c"), encoding="utf-8")
нажали «Открыть»
показывается диалог
filedialog
отмена?
да — ничего не делаем
return
нет — есть путь
Path(filename)
read_text(encoding="utf-8")
Правильный порядок: сначала проверка отмены, потом работа с путём.
Практика: filedialog + pathlib
Модуль tkinter открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →