|
Основой для статьи послужил материал PyAtSpi2Example. ВведениеСпецификация AT-SPI представляет собой набор протоколов и соглашений о взаимодействии операционной системы, прикладных программ и вспомогательных технологий с целью обеспечить доступ к графическому пользовательскому интерфейсу для лиц с различными ограничениями здоровья, нарушающими работу органов чувств, когнитивные функции и / или координацию движений. AT-SPI применяется в графических пользовательских окружениях дистрибутивов GNU/Linux и стандартизована в группе стандартов ISO/IEC 13066. Для того чтобы изучить, как элементы пользовательского интерфейса представлены средствами AT-SPI для вспомогательных технологий, подойдёт модуль pyatspi, содержащий привязки AT-SPI для python. Также pyatspi будет полезен для создания автоматизированных тестов доступности пользовательского интерфейса приложения и для проверки работоспособности пользовательского интерфейса приложения в целом. Стоит отметить, что во операционных системах инфраструктура поддержки вспомогательных технологий часто совмещена со средствами автоматического тестирования пользовательского интерфейса, поскольку обе задачи базируются на машиночитаемой информации, которую о своём интерфейсе предоставляет приложение и которую затем пожно использовать либо для проверки работоспособности виджетов (например, инструмент Accerciser), либа для представления его пользователю невизуальным способом (например, программа экранного доступа Orca, использующая синтез речи и тактильный вывод). В пакетных базах многих дистрибутивов GNU/Linux уже имеются готовые сборки pyatspi. Например, в Ubuntu pyatspi можно установить командой с правами root: apt install python-pyatspi Исследование дерева AT-SPIВ системах графического пользовательского интерфейса элементы, как правило, организованы в виде иерархического дерева со связями родитель (контейнер) — потомки, которые сами могут быть контейнерными элементами для потомков следующего уровня, а могут и не содержать дочерних элементов. По этой причине представление пользовательского интерфейса для целей вспомогательных технологий (assistive technology) выполняется в виде иерархического дерева, которое часто называют деревом доступности (accessibility three). Спецификация AT-SPI не является исключением и экспонирует элементы управления (виджеты) пользовательского интерфейса в виде иерархического дерева AT-SPI, навигацию по которому можно осуществлять, используя API модуля pyatspi. Конечно, сначала нужно импортировать пространство имён модуля pyatspi: import pyatspi Затем можно перечислить активные приложения: desktop = pyatspi.Registry.getDesktop(0) for application in desktop: print(application.name) Теперь посмотрим, чтчто представляет собой приложение в смысле пользовательского интерфейса: a = desktop[0] print(a.name) for o in a: print(o) Пример вывода (зависит от того, какие приложения открыты во время выполнения кода): gucharmap [frame | Character Map] Следовательно, это приложение gucharmap, которое имеет одно окно (фрейм), с заголовком «Character Map». Этот объект, как и остальные элементы дерева AT-SPI, позволяет взаимодействовать с объектами доступности (accessibility object). Итак, что можно получить: for o in a: print(o.role, o.name) Вывод:
Это значения свойств объекта доступности, связанного с окном приложения (фреймом) — роль и наименование. Теперь Перейдём на один уровень глубже: frame = a[0] for o in frame: print(o) Вывод: [panel | ] [menu bar | ] Следовательно, фрейм содержит панель и строку меню. Теперь покажем содержимое панели: panel = frame[0] for o in panel: print(o) Вывод: [status bar | U+10000 LINEAR B SYLLABLE B008 A] [text | test] [push button | Copy] [label | Text to copy:] [split pane | ] [filler | Font] Панель содержит, помимо прочего, поле для ввода текста и метку. У них разные роли, но эти объекты реализуют интерфейс для получения текстового содержимого, что позволяет манипулировать этим содержимым: t = panel[1] l = panel[3] print(t.role) print(l.role) t_text = t.queryText() l_text = l.queryText() Подробнее о взаимодействии с текстовым содержимым объектов доступности см.:
|
|||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2025 |
Социальные сети