Создание диалогового окна
Диалоговые окна, как элементы графического интерфейса, предназначены для вывода сообщений пользователю, получения от него какой-либо информации, а также управления.
Создадим свое диалоговое окно. Для примера оно создается используя несколько виджетов:
from tkinter import *
window = Tk()
window.title("Message box title")
window.geometry("300x75")
label = Label(window, text="My message content!")
label.pack()
button = Button(window, text="Ok", width=10, command=window.destroy)
button.pack(side=RIGHT)
window.mainloop()
2
3
4
5
6
7
8
9
10
Результат выполнения:
Мы получили простейшее диалоговое окно, и хотя диалоговые окна весьма разнообразны, их вид уже устоялся. Нет необходимости создавать диалоговые окна с нуля, для это можно использовать «заготовки».
Messagebox - окно с информацией
Для информирования пользователя о процессах происходящих в ПК можно использовать messagebox
- окно с информацией. При этом требуется дополнительно импортировать «подмодуль» tkinter
- tkinter.messagbox
, в котором описаны классы для окон данного типа.
Код созданного информационного окна может быть следующим:
from tkinter import messagebox
messagebox.showinfo('Message title', 'Message info content')
2
3
Результат выполнения:
Для привлечения внимания можно использовать окно предупреждения:
from tkinter import messagebox
messagebox.showwarning('Message warning title', 'Message warning content') # show warning message
2
3
Результат выполнения:
Окно с возникшей ошибкой ПО думаю встречал каждый, на питоне его можно создать, написав следующий код:
from tkinter import messagebox
messagebox.showerror('Message error title', 'Message error content') # show error message
2
3
Результат выполнения:
Messagebox - окно с вопросом
Следующие примеры диалоговых окон, служат для ведения диалога программы с пользователем и сохранением его ответа в переменной.
Попробуйте создать следующие примеры диалоговых окон, подумайте об их различий и где они могут применяться? Напишите комментарий в коде к каждому диалоговому окну:
from tkinter import messagebox
response = messagebox.askquestion('Message title', 'Message ask content')
response = messagebox.askyesno('Message title', 'Message y/n content')
response = messagebox.askyesnocancel('Message title', 'Message y/n/cancel content')
response = messagebox.askokcancel('Message title', 'Message ok/cancel content')
response = messagebox.askretrycancel('Message title', 'Message retry/cancel content')
2
3
4
5
6
7
Упражнения
- Исследование: после каждого вызова диалогового окна добавьте команду
print(response)
, которая выведет в консоль значение выбранного варианта ответа.
Окна открытия и сохранения файлов
Рассмотрим, как запрограммировать с помощью tkinter
вызов диалоговых окон открытия и сохранения файлов и работу с ними. При этом требуется дополнительно импортировать «подмодуль» tkinter
- tkinter.filedialog
, в котором описаны классы для окон данного типа:
from tkinter import *
from tkinter import filedialog
root = Tk()
document_open = filedialog.askopenfilename()
document_save = filedialog.asksaveasfilename()
root.mainloop()
2
3
4
5
6
7
8
Здесь создаются два объекта (document_open
и document_save
): один вызывает диалоговое окно «Открыть», а другой «Сохранить как…». При выполнении скрипта, они друг за другом выводятся на экран после появления главного окна. Если не создать root, то оно все-равно появится на экране, однако при попытке его закрытия в конце возникнет ошибка.
Упражнения
- Исследование: выведите в консоль результат вашего выбора в диалоговом окне.
- Что будет результатом вывода в консоль при выборе папок/файлов в диалоговых окнах и нажатии кнопки «ок»?
- Напишите программу с вызовом всех типов диалоговых окон для работы с файлами. Сколько их? И какие различия? (подскажет их PyCharm, когда наберете
filedialog.ask
)