Отправляет email-рассылки с помощью сервиса Sendsay

[prg] Как озвучить программу с помощью QAccessibleInterface

Здравствуйте.

Пытаюсь найти под Python оптимальную библиотеку для создания графического
интерфейса. Сейчас изучаю возможности PyQt. Судя по всему - еруда будет, ибо
JAWS такой интерфейс вряд ли будет нормально читать. Но все же хотелось бы
посмотреть повнимательнее... У QT есть специальный класс
QAccessibleInterface, который как раз и обеспечивает взаимодействие
интерфейса программы и скринридера. К сожалению, не удалось найти ничего,
где бы объяснялось хотя бы как в принципе нужно работать с данным
инструментом.

В конце письма скинул код небольшой тестовой программы. Она выводит окошко с
кнопкой и меткой. Кнопка озвучивается, заголовок окна тоже получить можно. А
вот метку не видно ничем. JAWS-курсор, кстати, окошка программы не видит
вообще никак.

Любопытно, как можно сделать такой интерфейс доступным. Ну включить
jaws-курсор - это, наверное, фантастика, но уж как-то заставить jaws видеть
текст метки, думаю, возможно...

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

Тестовая программа.

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Первая программа на PyQt")
window.resize(300, 70)
label = QtWidgets.QLabel("<center>Привет, мир!</center>")
btnQuit = QtWidgets.QPushButton("&Закрыть окно")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(btnQuit)
window.setLayout(vbox)
btnQuit.clicked.connect(app.quit)
window.show()
sys.exit(app.exec_())

Ответить   Wed, 28 Jun 2017 07:41:50 +0400 (#3503459)

 

Ответы:

Здравствуйте.

Вот же, вроде бы все об этом:
http://doc.qt.io/qt-5/accessible.html

С уважением, Константин.

Ответить   Wed, 28 Jun 2017 10:10:02 +0300 (#3503478)

 

Здравствуйте, Михаил Духонин.

В случае Python на сегодняшний день следует всегда уточнять, какая именно
редакция языка интересует: 2 или 3, потому что перечень совместимых
GUI-фреймворков для них различается.
Для Python 2 оптимальным по доступности является wxPython. Также можно
рассматривать варианты PyQt, PySide, OcempGUI и некоторых других, но кроме
PyQT на другие альтернативы wxPython для Python 2 я бы закладываться не
советовал: во-первых, они уже не поддерживаются, а во-вторых, некоторые из
них довольно специфичны и, например, тот же OcempGUI ориентирован больше на
игровые интерфейсы.
С Python известный мне 3 ассортимент беднее, но есть проект Phoenix, в
рамках которого идёт разработка совместимой с Python 3 версии wxPython, ну и
также остаётся PyQT.
Я сейчас затрудняюсь сказать актуальный статус Phoenix, по-моему он до сих
пор официально не стабилизирован, но с ним можно было работать уже некоторое
время назад.
Если говорить об accessibility, то wxPython поддерживает её заметно лучше,
чем PyQT, особенно на Windows. Однако PyQt в свою очередь имеет больший
диапазон поддерживаемых платформ в контексте кросс-платформенных приложений,
плюс в целом является более развитым и распространённым технологическим
стеком.
Я бы сказал так: если от интерфейса не требуется особо детального
взаимодействия при помощи программ экранного доступа, например, это просто
музыкальный плеер с набором кнопок в окне, то PyQt вполне подойдёт, если же
предполагается выполнение довольно сложных задач, типа работы в редакторе с
полноценной навигацией по тексту, то интерфейс на PyQt будет не очень хорош
и лучше рассмотреть возможность реализовать его на wxPython/Phoenix.
Обработка содержимого edit как раз в своё время меня больше всего и
расстроила в одном из проектов.

Начать имеет смысл отсюда, а дальше по ссылкам можно выйти на все остальные
разделы - http://doc.qt.io/qt-5/accessible.html

Ну вот ещё справочник по PyQt, возможно там найдёте полезные для себя
разъяснения - http://pyqt.sourceforge.net/Docs/PyQt5/
Извините, ваш код смотреть поленился, да и нет возможности его сейчас
погонять.
Успехов. Никита.
P.S. Ещё существует ветка Qt4, которая формально вроде до сих пор
поддерживается, но на неё лучше не завязываться. В Qt5 поддержка доступности
реализована лучше.

Ответить   Sun, 2 Jul 2017 00:23:22 +0300 (#3504226)