Глава 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
Практика выполняется локально