Шаг 81.
Библиотека Tkinter. Компоненты и вспомогательные классы. Вывод диалоговых окон открытия и сохранения файла

    На этом шаге мы рассмотрим создание и вывод диалоговых окон открытия и сохранения файлов.

    Функциональность вывода стандартных диалоговых окон открытия и сохранения файла реализована в модуле 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. Надеемся, что приведенная информация будет Вам полезна.




Предыдущий шаг Содержание