Панель запуска PyGadgets

panel zapuska pygadgets Приемы программирования графических интерфейсов

Сценарий PyGadgets запускает часть тех же программ, что и PyDemos, но для практического использования, а не как кратковременные демонстрации. Оба сценария отображают панель с кнопками и запускают программы с помощью модуля launchmodes, но сценарий PyGadgets немного проще, потому что его задача более узкая. Кроме того, сценарий PyGadgets поддерживает два режима запуска — он может сразу запустить одновременно все программы из списка или вывести графический интерфейс для запуска каждой программы отдельно. На рис. 10.19 изображен графический интерфейс в виде панели с кнопками для запуска программ по отдельности. Сценарии PyGadgets и PyDemos могут выполняться одновременно, и оба позволяют изменять размеры окна (попробуйте сами, чтобы увидеть, как это делается).

Рис. 10.19. Панель запуска PyGadgets

 

Из-за этих различий построение графического интерфейса в сценарии PyGadgets в большей мере основывается на данных: он сохраняет имена программ в списке и просматривает его при необходимости, а не проходит по последовательности заранее запрограммированных вызовов функции demoButton. Например, набор кнопок в панели запуска на рис. 10.19 целиком зависит от содержимого списка программ.

Программный код этого графического интерфейса приводится в примере 10.31. Его объем невелик, потому что опирается на использование других модулей, которые мы написали ранее, и осуществляющих большую часть его действий: launchmodes — для запуска программ, LaunchBrowser — для запуска веб-броузера, windows — для переопределения ярлыков и реализации операции завершения. На рабочем столе моего компьютера я создал ярлык для PyGadgets, и его окно практически всегда открыто у меня. С его помощью я легко получаю доступ к повседневно используемым инструментам — текстовым редакторам, калькуляторам, электронной почте, средствам обработки изображений и так далее, которые все встретятся нам в будущих главах.

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

Пример 10.31. PP4E\PyGadgets.py

############################################################################## Запускает различные примеры; запускайте сценарий при загрузке системы, чтобы сделать их постоянно доступными.

Этот файл предназначен для запуска программ, действительно необходимых в работе; для запуска демонстрационных программ Python/Tk и получения дополнительных сведений о параметрах запуска программ обращайтесь к сценарию PyDemos. Замечание о работе в Windows: это файл с расширением ‘.py’, поэтому при его запуске щелчком мыши выводится окно консоли, которое используется для вывода начального сообщения (включая 10-секундную паузу, чтобы обеспечить его видимость, пока запускаются приложения). Чтобы избежать вывода окна консоли, запускайте сценарий с помощью программы pythonw(а не python’), используйте расширение ‘.pyw’, в свойствах ярлыка в Windows выберите значение ‘Свернутое в значок’ (‘run minimized’) в поле ‘Окно’ (‘Window’) или запускайте файл из другой программы (см. PyDemos).

##############################################################################

import sys, time, os, time

from tkinter import *

from launchmodes import PortableLauncher # повторное использ. класса запуска from Gui.Tools.windows import MainWindow # повторное использ. оконных

#   инструментов: ярлык, обработчик

#   закрытия окна def runImmediate(mytools):

немедленный запуск программ

print(‘Starting Python/Tk gadgets…’) # вывод в stdout (временный)

for (name, commandLine) in mytools:

PortableLauncher(name, commandLine)() # сразу вызвать для запуска print(‘One moment please…’) if sys.platform[:3] == ‘win’: # windows: закрыть консоль через

for i in range(10): # 10 секунд

time.sleep(1); print(‘.’ * 5 * (i+1))

def runLauncher(mytools):

создать простую панель запуска для использования в дальнейшем

root = MainWindow(‘PyGadgets PP4E’) # или root = Tk() for (name, commandLine) in mytools:

b = Button(root, text=name, fg=’black’, bg=’beige’, border=2, command=PortableLauncher(name, commandLine))

b.pack(side=LEFT, expand=YES, fill=BOTH) root.mainloop()

mytools = [

(‘PyEdit’, ‘Gui/TextEditor/textEditor.py’),

(‘PyCalc’, ‘Lang/Calculator/calculator.py’),

(‘PyPhoto’, ‘Gui/PIL/pyphoto1.py Gui/PIL/images’),

(‘PyMail’, ‘Internet/Email/PyMailGui/PyMailGui.py’), (‘PyClock’, ‘Gui/Clock/clock.py -size 175 -bg white’

-picture Gui/gifs/pythonPowered.gif’), (‘PyToe’, ‘Ai/TicTacToe/tictactoe.py’

-mode Minimax -fg white -bg navy’), (‘PyWeb’, ‘LaunchBrowser.pyw’

-live index.html learning-python.com’)]

#’ -live PyInternetDemos.html localhost:80’)]

#’ file’)] # PyInternetDemos предполагает, что

# локальный веб-сервер уже запущен

if __name__ == ‘__main__’:

prestart, toolbar = True, False if prestart:

runImmediate(mytools)

if toolbar:

runLauncher(mytools)

По умолчанию сценарий PyGadgets сразу запускает все программы из списка. Чтобы запустить PyGadgets в режиме панели, в примере 10.32 импортируется и вызывается соответствующая функция с импортированным списком программ. Так как этот файл имеет расширение .pyw, на экране появится только графический интерфейс панели запуска — окно консоли открываться не будет. Это отлично подходит для повседневного использования, но не годится для случаев, когда желательно просматривать сообщения об ошибках (используйте расширение .py).

Пример 10.32. PP4E\PyGadgets_bar.pyw

запускает только панель инструментов PyGadgets — ни одна другая программа при этом не запускается; расширение файла предотвращает появление окна консоли в Windows: используйте расширение ‘.py’, чтобы видеть сообщения, выводимые в консоль;

import PyGadgets

PyGadgets.runLauncher(PyGadgets.mytools)

Этот сценарий — тот самый файл, на который ссылается ярлык на моем рабочем столе: я предпочитаю запускать приложения по мере необходимости. Создать ярлык и тем самым упростить возможность запуска можно на многих платформах. Такой сценарий можно выполнять и при загрузке системы, чтобы сделать его постоянно доступным (и сэкономить на щелчке мышью). Например, в Windows такой сценарий автоматически запускается при добавлении его в папку Автозагрузка (Statrup), а в Unix и в Unix-подобных системах можно автоматически запускать этот сценарий из командной строки в сценариях запуска, после запуска XWindow.

Каким бы способом ни был запущен сценарий PyGadgets — щелчком на ярлыке или на имени файла в проводнике по файловой системе, с помощью командной строки или иным образом, — появляется панель запуска, показанная в центре рис. 10.20.

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


 


Рис. 10.20. Панель запуска PyGadgets с несколькими запущенными


приложениями


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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