В довершение всего отметим, что программа PyMailGUI создана с поддержкой многооконного интерфейса — деталь, которую, возможно, трудно уловить по представленным снимкам экранов. Например, на рис. 14.46 показаны главное окно PyMailGUI со списком сообщений на сервере, два окна со списками сообщений, сохраненных в файлах, два окна просмотра писем и окно со справкой. Все эти окна являются немодальными, то есть действуют независимо и не мешают выбору других окон, хотя все они действуют в рамках одного процесса.
Рис. 14.46. Многооконный интерфейс PyMailGUI и текстовые редакторы
В целом одновременно может быть открыто любое количество окон для просмотра или составления сообщений, между которыми можно осуществлять операции копирования. Это важно, поскольку программа PyMailGUI должна обеспечить наличие в каждом окне отдельного объекта текстового редактора. Если бы объект текстового редактора был глобальным или использовал глобальные переменные, могло оказаться, что в каждом окне отображается один и тот же текст (а операции отправки могли бы привести к отправке текста из другого окна). Чтобы избежать этого, PyMailGUI создает и вставляет новые экземпляры TextEditor в каждое новое окно просмотра или составления сообщения и связывает новый редактор с обработчиком кнопки Send (Отправить), обеспечивая получение нужного текста. Это всего лишь действие обычного для ООП механизма сохранения состояния, но здесь он приносит ощутимую выгоду.
Во время своей работы PyMailGUI выводит множество различных сообщений о состоянии, но увидеть их можно, только если запустить программу из командной строки в консоли (например, в окне DOS в Windows или в xterm в Linux) или двойным щелчком на значке с именем файла (главным сценарием является файл с расширением .py, а не .pyw).
В Windows эти сообщения не будут видны при запуске PyMailGUI из других программ, таких как панели запуска PyDemos и PyGadgets. Эти сообщения о состоянии содержат информацию о сервере, показывают состояние загрузки почты и трассируют порождаемые попутно потоки загрузки, сохранения и удаления. Если вы хотите увидеть сообщения PyMailGUI, запустите ее из командной строки и наблюдайте:
C:\…\PP4E\Internet\Email\PyMailGui> PyMailGui.py
user: PP4E@learning-python.com
loading headers
Connecting…
b’+OK <24715.1275632750@pop05.mesa1.secureserver.net>’
load headers exit
synch check
Connecting…
b’+OK <26056.1275632770@pop19.prod.mesa1.secureserver.net>’
Same headers text
loading headers
Connecting…
b’+OK <18798.1275632771@pop04.mesa1.secureserver.net>’
load headers exit
synch check
Connecting…
b’+OK <28403.1275632790@pop19.prod.mesa1.secureserver.net>’
Same headers text
load 16
Connecting…
b’+OK <28472.1275632791@pop19.prod.mesa1.secureserver.net>’
Sending to…[‘lutz@rmi.net’, ‘PP4E@learning-python.com’] MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
From: PP4E@learning-python.com
To: lutz@rmi.net
Subject: Already got one…
Date: Fri, 04 Jun 2010 06:30:26 -0000
X-Mailer: PyMailGUI 3.0 (Python)
> — Origin
Send exit
Можно также выполнить двойной щелчок на файле PyMailGui.py в окне менеджера файлов и наблюдать появившееся окно консоли DOS в Windows. Сообщения в консоли предназначены главным образом для отладки, но также они могут помочь понять, как действует система.
Подробности об использовании PyMailGUI вы найдете в окне со справкой (щелкните на полосе вызова справки в верхней части окна со списком сообщений на сервере) или в строке справки в модуле PyMailGUI- Help.py, описываемом в следующем разделе.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011