Модуль Tkinter messagebox в Python на примерах
Различные окна сообщений можно отображать с помощью модуля tkinter.messagebox в Python.
Что такое модуль tkinter.messagebox?
При разработке приложения Tkinter часто возникает необходимость уведомлять пользователей о произошедших событиях. Например, когда пользователи нажимают кнопку «Сохранить», вы хотите уведомить их об успешном сохранении записи.
Если произошла ошибка, например, сервер базы данных недоступен, вы можете уведомить пользователей об ошибке. Если обновление завершено, но запись уже существует, вы можете захотеть отобразить предупреждение.
Чтобы охватить все эти сценарии, вы можете использовать различные функции из модуля tkinter.messagebox:
- showinfo() – уведомить об успешном завершении операции.
- showerror() – уведомляет о том, что операция не завершена из-за ошибки.
- showwarrning() – уведомляет о том, что операция завершена, но что-то пошло не так, как ожидалось.
Все эти функции принимают два аргумента:
showinfo(title, message) showerror(title, message) showwarrning(title, message)
- title отображается в строке заголовка диалогового окна.
- message отображается в диалоговом окне.
Чтобы разбить сообщение на несколько строк, можно добавить символ новой строки «\n».
Примеры сообщений Tkinter
Следующая программа состоит из трех кнопок. При нажатии кнопки отображается соответствующее окно сообщения.
import tkinter as tk from tkinter import ttk from tkinter.messagebox import showerror, showwarning, showinfo # create the root window root = tk.Tk() root.title('Tkinter MessageBox') root.resizable(False, False) root.geometry('300x150') # options = {'fill': 'both', 'padx': 10, 'pady': 10, 'ipadx': 5} ttk.Button( root, text='Show an error message', command=lambda: showerror( title='Error', message='This is an error message.') ).pack(**options) ttk.Button( root, text='Show an information message', command=lambda: showinfo( title='Information', message='This is an information message.') ).pack(**options) ttk.Button( root, text='Show an warning message', command=lambda: showwarning( title='Warning', message='This is a warning message.') ).pack(**options) # run the app root.mainloop()
Как это работает.
- Сначала импортируйте модули tkinter, tkinter.ttk и tkinter.messagebox:
import tkinter as tk from tkinter import ttk from tkinter.messagebox import showerror, showwarning, showinfo
- Во-вторых, создайте корневое окно и инициализируйте его свойства:
# create the root window root = tk.Tk() root.title('Tkinter MessageBox') root.resizable(False, False) root.geometry('300x150')
- В-третьих, создайте три кнопки и назначьте лямбда-выражение опции команды каждой кнопки. Каждое лямбда-выражение показывает соответствующее окно сообщения.
ttk.Button( root, text='Show an error message', command=lambda: showerror( title='Error', message='This is an error message.') ).pack(**options) ttk.Button( root, text='Show an information message', command=lambda: showinfo( title='Information', message='This is an information message.') ).pack(**options) ttk.Button( root, text='Show an warning message', command=lambda: showwarning( title='Warning', message='This is a warning message.') ).pack(**options)
- Наконец, отобразите корневое окно.
root.mainloop()