From tkinter import messagebox python

From tkinter import messagebox python

Tkinter имеет ряд встроенных окон для разных ситуаций, в частности, окна сообщений, функционал которых заключен в модуле tkinter.messagebox . Для отображения сообщений этот модуль предоставляет следующие функции:

  • showinfo() : предназначена для отображения некоторой информации
  • showerror() : предназначена для отображения ошибок
  • showwarrning() : предназначена для отображения предупреждений

Все эти функции принимают три параметра:

showinfo(title, message, **options) showerror(title, message, **options) showwarrning(title, message, **options)
  • title : заголовок окна
  • message : отображаемое сообщение
  • options : настройки окна

В реальности различие между этими типами сообщений заключается лишь в изображении, которое отображается рядом с текстом сообщения:

from tkinter import * from tkinter import ttk from tkinter.messagebox import showerror, showwarning, showinfo root = Tk() root.title("METANIT.COM") root.geometry("250x200") def open_info(): showinfo(title="Информация", message="Информационное сообщение") def open_warning(): showwarning(title="Предупреждение", message="Сообщение о предупреждении") def open_error(): showerror(title="Ошибка", message="Сообщение об ошибке") info_button = ttk.Button(text="Информация", command=open_info) info_button.pack(anchor="center", expand=1) warning_button = ttk.Button(text="Предупреждение", command=open_warning) warning_button.pack(anchor="center", expand=1) error_button = ttk.Button(text="Ошибка", command=open_error) error_button.pack(anchor="center", expand=1) root.mainloop()

Здесь по нажатию на каждую из трех кнопок отображается соответствующее сообщение:

Окна с сообщениями messagebox в Tkinter и Python

Окна подтверждения операции

Модуль tkinter.messagebox также предоставляет ряд функций для подтверждения операции, где пользователю предлагается нажать на одну из двух кнопок:

Все эти функции принимают те же три параметра title, message и options. Отличие между ними только в том, что кнопки имеют разный текст. В случае нажатия на кнопку подтверждения, функция возвращает значение True , иначе возвращается False

from tkinter import * from tkinter import ttk from tkinter.messagebox import showinfo, askyesno root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): result = askyesno(title="Подтвержение операции", message="Подтвердить операцию?") if result: showinfo("Результат", "Операция подтверждена") else: showinfo("Результат", "Операция отменена") ttk.Button(text="Click", command=click).pack(anchor="center", expand=1) root.mainloop()

В данном случае по нажатию на кнопку вызывается функция askyesno() , которая отображает диалоговое окно с двумя кнопками «Да» и «Нет». В зависимости от того, на какую кнопку нажмет пользователь, функция возвратит True или False. Получив результат функции, мы можем проверить его и выполнить те или иные действия.

Читайте также:  How to send post request python

Диалоговые окна в Tkinter и Python

Особняком стоит функция askquestion — она также отображает две кнопки для подтверждения или отмены действия (кнопки «Yes»(Да) и «No»(Нет)), но в зависимости от нажатой кнопки возвращает строку: «yes» или «no».

Также отдельно стоит функция askyesnocancel() — она отображает три кнопки: Yes (возвращает True), No (возвращает False) и Cancel (возвращает None):

from tkinter import * from tkinter import ttk from tkinter.messagebox import showinfo, askyesnocancel root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): result = askyesnocancel(title="Подтвержение операции", message="Подтвердить операцию?") if result==None: showinfo("Результат", "Операция приостановлена") elif result: showinfo("Результат", "Операция подтверждена") else : showinfo("Результат", "Операция отменена") ttk.Button(text="Click", command=click).pack(anchor="center", expand=1) root.mainloop()

В этом случае диалоговое окно предоставит выбор из трех альтернатив

Диалоговые окна подтверждения операции в Tkinter и Python

Настройка окон

Дополнительно все вышерассмотренные функции принимают ряд параметров, которые могут применяться для настройки окон. Некоторые из них:

  • detail : дополнительный текст, который отображается под основным сообщением
  • icon : иконка, которая отображается рядом с сообщением. Должна представлять одно из втроенных изображений: info, error, question или warning
  • default : кнопка по умолчанию. Должна представлять одно из встроенных значений: abort, retry, ignore, ok, cancel, no, yes
from tkinter import * from tkinter import ttk from tkinter.messagebox import OK, INFO, showinfo root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): showinfo(title="METANIT.COM", message="Добро пожаловать на сайт METANIT.COM", detail="Hello World!", icon=INFO, default=OK) ttk.Button(text="Click", command=click).pack(anchor="center", expand=1) root.mainloop()

При нажатии на кнопку отобразится следующее окно:

Источник

tkinter.messagebox — Tkinter message prompts¶

The tkinter.messagebox module provides a template base class as well as a variety of convenience methods for commonly used configurations. The message boxes are modal and will return a subset of (True, False, OK, None, Yes, No) based on the user’s selection. Common message box styles and layouts include but are not limited to:

../_images/tk_msg.png

class tkinter.messagebox. Message ( master = None , ** options ) ¶

Create a default information message box.

Information message box

tkinter.messagebox. showinfo ( title = None , message = None , ** options ) ¶

Warning message boxes

tkinter.messagebox. showwarning ( title = None , message = None , ** options ) ¶ tkinter.messagebox. showerror ( title = None , message = None , ** options ) ¶

Question message boxes

tkinter.messagebox. askquestion ( title = None , message = None , ** options ) ¶ tkinter.messagebox. askokcancel ( title = None , message = None , ** options ) ¶ tkinter.messagebox. askretrycancel ( title = None , message = None , ** options ) ¶ tkinter.messagebox. askyesno ( title = None , message = None , ** options ) ¶ tkinter.messagebox. askyesnocancel ( title = None , message = None , ** options ) ¶

Источник

Диалоговые окна

Пакет tkinter содержит несколько модулей, предоставляющих доступ к уже готовым диалоговым окнам. Это окна различных сообщений, выбора по принципу «да-нет», открытия и сохранения файлов и др. В этом уроке рассмотрим примеры окон из модулей messagebox и filedialog пакета tkinter .

Модули пакета необходимо импортировать отдельно. То есть вы импортируете содержимое tkinter (например, from tkinter import * ) и отдельно входящий в состав пакета tkinter модуль. Способы импорта на примере messagebox и пример вызова одной из функций модуля:

  • import tkinter.messagebox → tkinter.messagebox.askyesno()
  • from tkinter.messagebox import * → askyesno()
  • from tkinter import messagebox → messagebox.askyesno()
  • from tkinter import messagebox as mb (вместо mb может быть любой идентификатор) → mb.askyesno()

В уроке мы будем использовать последний вариант.

Модуль messagebox – стандартные диалоговые окна

Окно выбора «да» или «нет» – askyesno :

from tkinter import * from tkinter import messagebox as mb def check(): answer = mb.askyesno(title="Вопрос", message="Перенести данные?") if answer: s = entry.get() entry.delete(0, END) label['text'] = s root = Tk() entry = Entry() entry.pack(pady=10) Button(text='Передать', command=check).pack() label = Label(height=3) label.pack() root.mainloop()

messagebox.askyesno

Нажатие «Да» в диалоговом окне возвращает в программу True , «Нет» вернет False (также как закрытие окна через крестик). Таким образом в коде можно обработать выбор пользователя. В данном случае если последний соглашается, то данные переносятся из поля в метку.

Опции title и message являются позиционными, так что можно указывать только значения: askyesno(«Вопрос», «Перенести данные?») .

Подобные окна генерируются при использовании функции askokcancel с надписями на кнопках «ОК» и «Отмена», askquestion (возвращает не True или False , а строки ‘yes’ или ‘no’), askretrycancel («Повторить», «Отмена»), askyesnocancel («Да», «Нет», «Отмена»).

Другую группу составляют окна с одной кнопкой, которые служат для вывода сообщений различного характера. Это showerror , showinfo и showwarning .

from tkinter import * from tkinter import messagebox as mb def check(): s = entry.get() if not s.isdigit(): mb.showerror("Ошибка", "Должно быть введено число") else: entry.delete(0, END) label['text'] = s root = Tk() entry = Entry() entry.pack(pady=10) Button(text='Передать', command=check).pack() label = Label(height=3) label.pack() root.mainloop()

Окно messagebox.showerror

Модуль filedialog – диалоговые окна открытия и сохранения файлов

Рассмотрим две функции из модуля filedialog – askopenfilename и asksaveasfilename . Первая предоставляет диалоговое окно для открытия файла, вторая – для сохранения. Обе возвращают имя файла, который должен быть открыт или сохранен, но сами они его не открывают и не сохраняют. Делать это уже надо программными средствами самого Python.

from tkinter import * from tkinter import filedialog as fd def insert_text(): file_name = fd.askopenfilename() f = open(file_name) s = f.read() text.insert(1.0, s) f.close() def extract_text(): file_name = fd.asksaveasfilename( filetypes=(("TXT files", "*.txt"), ("HTML files", "*.html;*.htm"), ("All files", "*.*"))) f = open(file_name, 'w') s = text.get(1.0, END) f.write(s) f.close() root = Tk() text = Text(width=50, height=25) text.grid(columnspan=2) b1 = Button(text="Открыть", command=insert_text) b1.grid(row=1, sticky=E) b2 = Button(text="Сохранить", command=extract_text) b2.grid(row=1, column=1, sticky=W) root.mainloop() 

filedialog.asksaveasfilename()

Опция filetype позволяет перечислить типы файлов, которые будут сохраняться или открываться, и их расширения.

Примечание. В приведенном коде при размещении текстового поля методом grid не указаны аргументы row и column . В таких случаях подразумевается, что их значениями являются нули.

Практическая работа

В приведенной в уроке программе с функциями askopenfilename и asksaveasfilename генерируются исключения, если диалоговые окна были закрыты без выбора или указания имени файлов.

Напишите код обработки данных исключений. При этом для пользователя должно появляться информационное диалоговое окно с сообщением о том, что файл не загружен или не сохранен.

Добавьте кнопку «Очистить», которая удаляет текст из поля. Перед удалением пользователь должен подтвердить свои намерения через соответствующее диалоговое окно.

Курс с примерами решений практических работ: pdf-версия

Tkinter. Программирование GUI на Python

Источник

tkinter messagebox

The Tkinter tkMessageBox has various methods to display a message box.

There is a slight difference between Tkinter for Python 2.7 and Python 3.
To find your Python version try one of these commands:

python —version
python3 —version

Related courses

Tkinter Message box

Tkinter Message box

TkMessage box To show a minimalistic Tkinter message box, use the function showinfo() where the parameters are the window title and text.

The showinfo() function is in a different module depending on the Python version.

from tkinter import messagebox

messagebox.showinfo(«Title», «a Tk MessageBox»)
import Tkinter
import tkMessageBox

tkMessageBox.showinfo(«Title», «a Tk MessageBox»)

Tkinter showerror, showwarning and showinfo

tkinter-dialog

import tkinter
from tkinter import messagebox

# hide main window
root = tkinter.Tk()
root.withdraw()

# message box display
messagebox.showerror(«Error», «Error message»)
messagebox.showwarning(«Warning»,«Warning message»)
messagebox.showinfo(«Information»,«Informative message»)
import Tkinter
import tkMessageBox

# An error box
tkMessageBox.showerror(«Error»,«No disk space left on device»)

# A warning box
tkMessageBox.showwarning(«Warning»,«Could not start service»)

# An information box
tkMessageBox.showinfo(«Information»,«Created in Python.»)

If you are new to programming Tkinter, I highly recommend this course.

Источник

Оцените статью