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