Использование перенаправления для сценариев архивирования

ispolzovanie perenapravleniya dlya scenariev arhivirovaniya Приемы программирования графических интерфейсов

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

Пример 10.13. PP4E\Gui\ShellGui\packdlg-redirect.py

# обертывает запуск сценария командной строки инструментом перенаправления его # вывода в графический интерфейс

from tkinter import *

from packdlg import runPackDialog

from PP4E.Gui.Tools.guiStreams import redirectedGuiFunc

def runPackDialog_Wrapped(): # обработчик для использования в

redirectedGuiFunc(runPackDialog) # модуле mytools.py, обертывает прежний # обработчик целиком

if __name__ == ‘__main__’:

root = Tk()

Button(root, text=’pop’, command=runPackDialog_Wrapped).pack(fill=X) root.mainloop()

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

Рис. 10.9. Перенаправление вывода сценария во всплывающие окна с графическим интерфейсом

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

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

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий