В более старом программном коде на языке Python можно иногда увидеть диалоги, реализованные с использованием стандартного модуля dialog. Сейчас он несколько устарел и использует внешний вид, характерный для X Window, но на случай, если вам придется встретить такой программный код при сопровождении программ на языке Python, пример 8.12 может дать представление об этом интерфейсе.
Пример 8.12. PP4E\Gui\Tour\dlg-old.py
from tkinter import *
from tkinter.dialog import Dialog
class OldDialogDemo(Frame):
def __init__(self, master=None): Frame.__init__(self, master) Pack.config(self) # то же, что и self.pack()
Button(self, text=’Pop1’, command=self.dialog1).pack() Button(self, text=’Pop2’, command=self.dialog2).pack()
def dialog1(self):
ans = Dialog(self, title = ‘Popup Fun!’, text = ‘An example of a popup-dialog ‘ ‘box, using older “Dialog.py”.’, bitmap = ‘questhead’, default = 0, strings = (‘Yes’, ‘No’, ‘Cancel’)) if ans.num == 0: self.dialog2()
Dialog(self, title = ‘HAL-9000’,
text = “I’m afraid I can’t let you do that, Dave…”, bitmap = ‘hourglass’, default = 0, strings = (‘spam’, ‘SPAM’))
if __name__ == ‘__main__’: OldDialogDemo().mainloop()
Если передать функции Dialog кортеж с метками для кнопок и текст сообщения, она вернет индекс нажатой кнопки (самая левая кнопка имеет индекс ноль). Окна Dialog являются модальными: доступ к остальным окнам приложения блокируется, пока Dialog ожидает ответа пользователя. При нажатии кнопки Pop2 в главном окне этого сценария выводится второй диалог, как показано на рис. 8.17.
Рис. 8.17. Диалог в старом стиле
Сценарий был запущен в Windows, и, как видите, этот диалог нисколько не похож на то, что можно было бы ожидать на этой платформе. При вызове на любой платформе этот диалог имеет внешний вид, принятый в X Window. Из-за внешнего вида диалогов, воспроизводимых модулем dialog и повышенной сложности его использования лучше использовать стандартные диалоги, продемонстрированные в предыдущем разделе.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011