|
|
Îñíîâîé äëÿ ñòàòüè ïîñëóæèë ìàòåðèàë 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() Ïîäðîáíåå î âçàèìîäåéñòâèè ñ òåêñòîâûì ñîäåðæèìûì îáúåêòîâ äîñòóïíîñòè ñì.: Îáðàòèòå âíèìàíèå, ÷òî Îò äî÷åðíåãî óçëà ìîæíî âåðíóòüñÿ ê ðîäèòåëüñêîìó: Äëÿ òîãî ÷òîáû îòñëåæèâàòü èçìåíåíèÿ, ïðîèñõîäÿùèå ñ ýëåìåíòàìè äåðåâà AT-SPI, ðàññìîòðèì, êàê ðåàãèðîâàòü íà ñîáûòèÿ... Ñîáûòèÿ AT-SPI — ýòî ñïîñîá óâåäîìèòü âñïîìîãàòåëüíûå òåõíîëîãèè îá èçìåíåíèÿõ, êîòîðûå ïðîèçîøëè â ïîëüçîâàòåëüñêîì èíòåðôåéñå ïðèëîæåíèÿ. Òàêèå èçìåíåíèÿ ìîãóò áûòü âûçâàíû äåéñòâèÿìè ïîëüçîâàòåëÿ (àêòèâàöèÿ ýëåìåíòîâ, ïåðåìåùåíèå ôîêóñà, ââîä òåêñòà è ò.ä.) èëè ñàìèì ïðèëîæåíèåì (âñïëûâàþùèå óâåäîìëåíèÿ, ñîîáùåíèÿ â ñòðîêå ñòàòóñà è ò.ä.). Íàïðèìåð, ÷òîáû ñëåäèòü çà ïåðåìåùåíèåì òåêñòîâîãî êóðñîðà (êàðåòêè), íåîáõîäèìî çàðåãèñòðèðîâàòü îáðàáîò÷èê ñîîòâåòñòâóþùåãî ñîáûòèÿ: Âûâîä ïîñëå íåêîòîðûõ äåéñòâèé ïîëüçîâàòåëÿ: Ýòîò âûâîä ïîêàçûâàåò, ÷òî ïîëüçîâàòåëü ïåðåìåñòèë êóðñîð âíóòðè òåêñòîâîãî âèäæåòà, à çàòåì â âèäæåò çàïèñè. Ñõîæèì îáðàçîì ìîæíî îòñëåæèâàòü ïåðåìåùåíèå ôîêóñà: è ýòî ïîçâîëèò ïîëó÷èòü èíòåðåñíûé âûâîä äëÿ ïîñëåäóþùåé îáðàáîòêè. Ìîæíî îòñëåæèâàòü âñå âàðèàíòû èçìåíåíèÿ ñîñòîÿíèÿ, çàðåãèñòðèðîâàâ îáðàáîò÷èêè äëÿ |
|||||||||
|
Ðàñïðîñòðàíåíèå ìàòåðèàëîâ ñàéòà îçíà÷àåò, ÷òî ðàñïðîñòðàíèòåëü ïðèíÿë óñëîâèÿ ëèöåíçèîííîãî ñîãëàøåíèÿ. Èäåÿ è ðåàëèçàöèÿ: © Âëàäèìèð Äîâûäåíêîâ è Àíàòîëèé Êàìûíèí, 2004-2026 | ||||||||||
Ñîöèàëüíûå ñåòè