Читать «Программирование на Python. Том 1» онлайн - страница 642

Марк Лутц

Запустите сценарий eloekstyles.py (или щелкните на кнопке PyClock в программе PyDemos, которая делает то же самое), чтобы воссоздать эту сцену с часами на своем компьютере. Во всех этих часах 10 раз в секунду проверяется изменение системного времени с использованием со-

Рис. 11.24. Несколько готовых стилей часов: eloekstyles.py

бытий after. При выполнении в виде окон верхнего уровня в одном и том же процессе все они получают событие от таймера из одного и того же цикла событий. При запуске в качестве независимых программ в каждой из них имеется собственный цикл событий. В том и другом случае их секундные стрелки дружно перемещаются раз в секунду.

Исходный программный код PyClock

Вся реализация PyClock находится в одном файле, за исключением предварительно подготовленных объектов с настройками стилей. Если посмотреть в конец примера 11.12, можно заметить, что объект часов можно создать, либо передав конструктору объект с настройками, либо определив параметры настройки в аргументах командной строки, как показано ниже (в этом случае сценарий просто сам создаст объект с настройками):

C:\...\PP4E\Gui\Clock> clock.py -bg gold -sh brown -size 300

Вообще говоря, для запуска часов этот файл можно выполнить непосредственно, с аргументами или без; импортировать его и создать объекты, используя объекты с настройками, чтобы часы выглядели более индивидуально; или импортировать и прикрепить его объекты к другим графическим интерфейсам. Например, PyGadgets из главы 10 запускает этот файл с параметрами командной строки, управляющими внешним видом часов.

Пример 11.12. PP4E\Gui\Cloek\eloek.py

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

PyClock 2.1: часы с графическим интерфейсом на Python/tkinter.

В обоих режимах отображения, аналоговом и цифровом, могут выводить метку с датой, графические изображения на циферблате, изменять размеры и так далее. Могут запускаться автономно или встраиваться (прикрепляться) в другие графические интерфейсы, где требуется вывести текущее время.

Новое в версии 2.0: клавиши s/m устанавливают таймер, отсчитывающий секунды/ минуты перед выводом всплывающего сообщения; значок окна.

Новое в версии 2.1: добавлена возможность выполнения под управлением Python 3.X (2.X больше не поддерживается)

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

from tkinter import *

from tkinter.simpledialog import askinteger import math, time, sys

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

#    Классы параметров настройки

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

class ClockConfig:

#    умолчания - переопределите в экземпляре или в подклассе

size = 200    # ширина=высота

bg, fg = ‘beige’, ‘brown’    # цвет циферблата, рисок

hh, mh, sh, cog = ‘black’, ‘navy’, ‘blue’, ‘red’ # стрелок, центра picture = None    # файл картинки