Корневое окно в PyCairo [Урок №11]

автор

В этом разделе учебного материала мы будем работать с корневым окном. Корневое окно это окно рабочего стола, на котором обычно располагаются значки ярлыков.
Над корневым окном можно выполнять различные манипуляции. С точки зрения программиста, это просто особый тип окна.

Прозрачное окно

В нашем первом примере мы создадим прозрачное окно. Мы увидим, что находится под объектом окна.

Для создания прозрачного окна, мы получили изображения окна объекта и применяем его в нашем окне. В методе on_draw()  мы рисуем поверх визуального объекта окна. Это создаст видимость частичной прозрачности.

Нам нужно задать приложение для рисования.

Метод get_screen()  возвращает объект экрана.

Мы получаем изображение из экрана окна. Визуал содержит в себе информацию о низкоуровневом дисплее.

Не все дисплеи поддерживают эту операцию. Таким образом, мы проверяем, поддерживает ли наш экран композицию и возвращенный визуал. Мы указываем визуал экрана в качестве визуала для нашего окна.

Мы используем исходник частичной прозрачности для рисования поверх окна экрана. Применив cairo.OPERATOR_SOURCE мы создаем операцию композиции, в которой мы можем рисовать поверх исходника, находящегося в окне экрана. Для получения полной прозрачности, мы указываема альфа-значение как 0, или используем операцию cairo.OPERATOR_CLEAR .

Делаем скриншот

Корневое окно имеет первостепенное значение при создании скриншота.

В данном примере мы делаем снимок всего экрана.

Мы открываем корневое окно при помощи вызова метода Gdk.get_default_root_window() .

Определяем высоту и ширину корневого окна.

Создаем пустую поверхность изображения, такого же размера, как и корневое окно.

Получаем pixbuf из корневого окна, вызвав метод Gdk.pixbuf_get_from_window(). Pixbuf – это используемый библиотекой GTK объект, описывающий изображение в памяти.

В вышеуказанном коде, мы создаем контекст рисования Cairo на поверхности изображения, которую мы создали ранее.

Поверхность изображения записана в изображении PNG при помощи метода write_to_png().

Демонстрация сообщений

В третьем примере мы покажем сообщение на рабочем столе.

Код показывает метку сообщения в корневом окне.

Мы будем работать с окном приложения, для этого нам нужно будет сделать так, чтобы в нем можно было рисовать.

Применив этот прием, мы убираем границы и оформление окна.

Приложение должно находиться внизу, как раз над корневым окном.

Настраиваем визуал экрана таким образом, чтобы он стал визуалом нашего приложения.

Размещаем метку изображения в окне приложения.

При помощи модуля Pango, мы меняем внешний вид нашего текста.

Используем оператор cairo.OPERATOR_CLEAR для очистки заднего фона окна. После этого мы используем оператор cairo.OPERATOR_CLEAR, чтобы нарисовать виджет метки.

Существует старый баг, который не позволяет нам завершить загрузку приложения из терминала при помощи команды Ctrl+C . Следует добавить две линии для того чтобы обойти эту ошибку.

Вот такая надпись на рабочем столе!

Вам может быть интересно

Scroll Up