На этом шаге мы рассмотрим создание и вывод диалоговых окон открытия и сохранения файлов.
Функциональность вывода стандартных диалоговых окон открытия и сохранения файла реализована в модуле tkinter.filedialog. Его обязательно следует импортировать:
import tkinter.filedialog
В этом модуле определены следующие две функции:
Обе функции возвращают полный путь к указанному файлу или пустую строку, если была нажата кнопка Отмена.
Поддерживаемые диалоговыми окнами опции:
Вот небольшой пример:
from tkinter import * import tkinter.ttk import tkinter.filedialog class Application(tkinter.ttk.Frame): def __init__(self, master=None) : super().__init__() self.pack() self.create_widgets() self.master.title("Окна открытия и сохранения файла") def create_widgets(self): self.btn1 = tkinter.ttk.Button(self, text="Открытие файла", command=self.open_file) self.btn1.pack() self.btn2 = tkinter.ttk.Button(self, text="Сохранение файла", command=self.save_file) self.btn2.pack() self.btn3 = tkinter.ttk.Button(self, text="Удаление текста", command=self.text_delete) self.btn3.pack() self.text = Text(self, width=40, height=10, font="Verdana 12") self.text.pack() def open_file(self): # Выводим диалоговое окно открытия файла filename = tkinter.filedialog.askopenfilename(title="Открыть файл", filetypes=(("Текстовые файлы", "TXT"),)) if filename: # Пользователь выбрал файл. Открываем его. self.text_delete() file = open(filename, "r") tmp = file.readline() while tmp != '': self.text.insert(END, tmp) tmp = file.readline() file.close() else: # Пользователь отказался открывать файл pass def save_file(self): # Выводим диалоговое окно сохранения файла filename = tkinter.filedialog.asksaveasfilename(title="Сохранить файл", filetypes=(("Текстовые файлы", "TXT"), ("Файлы CSV", "CSV")), defaultextension=".txt", initialdir="c:\\") context = self.text.get(1.0, END) file = open(filename, "w") file.write(context) file.close() def text_delete(self): # Очишаем текстовое поле self.text.delete('1.0', END) root = tkinter.Tk() app = Application(master=root) root.mainloop()
Результат работы приложений приведен на рисунках 1 и 2.
Рис.1. Диалоговое окно открытия файла
Рис.2. Диалоговое окно сохранения файла
Мы закончили изучение основных возможностей библиотеки Tkinter. Надеемся, что приведенная информация будет Вам полезна.