Шаг 80.
Библиотека Tkinter. Компоненты и вспомогательные классы. Стандартные диалоговые окна. Вывод окон-сообщений

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

    Наконец, библиотека Tkinter позволяет нам использовать в приложениях стандартные диалоговые окна: окна-сообщения различного типа, диалоговые окна открытия и сохранения файла.

Вывод окон-сообщений

    Функциональность вывода стандартных окон-сообщений реализована в модуле tkinter.messagebox. Поэтому его обязательно следует импортировать:

  import tkinter.messagebox

    Для вывода окон-сообщений различных типов применяются следующие функции:

    Все эти функции имеют одинаковый формат вызова:

  <Функция>(<Текст заголовка>, <Текст сообщения>[, <Опции окна>])

    Текст заголовка окна и текст выводящегося в нем сообщения задаются в виде строк. Опции указываются так же, как у компонентов,- путем сопоставления параметров, чьи имена совпадают с опциями, по ключам. Поддерживаются следующие опции:

    Приведем пример:

import tkinter
import tkinter.ttk
import tkinter.messagebox

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.but1)
        self.btn1.pack()
        self.btn2 = tkinter.ttk.Button(self, text="Окно-предупреждение_1", 
              command=self.but2)
        self.btn2.pack()
        self.btn3 = tkinter.ttk.Button(self, text="Окно-предупреждение_2", 
              command=self.but3)
        self.btn3.pack()

    def but1(self):
        # Выводим обычное окно-сообщение
        tkinter.messagebox.showinfo("Test", "Сообщение")

    def but2(self):
        # Выводим окно-предупреждение с кнопками "Да" и "Нет"
        # и обрабатываем нажатия на эти кнопки
        if tkinter.messagebox.askyesno("Test", "Сообщение"):
            print("Была нажата кнопка Да")
        else:
            print("Была нажата кнопка Нет")

    def but3(self):
        # Выводим окно-предупреждение с кнопками "Да" и "Нет",
        # в котором изначально фокус ввода будет иметь кнопка "Нет"
        if tkinter.messagebox.askyesno("Test", "Сообщение", 
                  default=tkinter.messagebox.NO):
            print("Была нажата кнопка Да")
        else:
            print("Была нажата кнопка Нет")

        
root = tkinter.Tk()
app = Application(master=root)
root.mainloop()
Архив с файлом можно взять здесь.

    На рисунках 1 и 2 приведены примеры окон-сообщений



Рис.1, 2. Примеры окон-сообщений

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




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