wx.html2.WebView 和屏幕阅读器

2023-12-23

在 wxPython 4.0 Phoenix 中,我尝试将 wx.html2.WebView 与屏幕阅读器一起使用。

无论是使用 JAWS 还是 NVDA,我都必须在小部件上单击鼠标左键才能在可访问的 Web 界面中查看我的页面。

这是我的代码,但要知道我在使用 LoadURL 方法时遇到了同样的问题。

我是否应该添加一些内容,以便在显示小部件时焦点直接位于 Web 界面中?

预先感谢您的答复。

import wx
import wx.html2

class MyWebView (wx.Dialog):

    def __init__(self, parent):
        wx.Dialog.__init__(self, parent)
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.browser = wx.html2.WebView.New(self)
        self.changeBtn = wx.Button (self, -1, label="Change page")

        # The pages that I want to display disposed in a tuple.
        self.pages = (
        "<html><head><title>Hello everyone !</title></head><body><h1>We're testing wx.html2.WebView with a Screen Reader !</h1></body></html>",
        "<html><head><title>Second page !</title></head><body><h1>This is a second page</h1></body></html>",
        "<html><head><title>Third page !</title></head><body><h1>This is a third page</h1></body></html>"
        )

        self.index = 0
        self.display = self.pages[self.index]
        sizer.Add(self.browser, 1, wx.EXPAND, 10)
        sizer.Add(self.changeBtn)
        self.SetSizer(sizer)
        self.SetSize((700, 700))

    # Events.
        self.changeBtn.Bind (wx.EVT_BUTTON, self.onChangePage)

    def onChangePage (self, evt):
        self.index += 1
        if self.index == len (self.pages):
            self.index = 0
        self.display = self.pages[self.index]
        self.browser.SetPage(self.display, "")

if __name__ == '__main__':
    app = wx.App()
    dialog = MyWebView (None)
    dialog.browser.SetPage(dialog.display, "")
    dialog.Show ()
    app.MainLoop()

亲切的问候。


在 Windows 下,由于 Internet Explorer Server 的一个奇怪错误,您实际上需要单击小部件中的某个位置,以便屏幕阅读器可以与其交互。 一旦进行了初始点击,屏幕阅读器就可以与该小部件完美配合。

请注意,使用 C++ 的最新 wxWidgets 3.1.3 仍然会出现同样的问题。 事实上,wxWidgets 和 wxPython 都不会对这个错误负责。当直接使用 ActiveX 和 Win32 API 嵌入 Internet Explorer Server 时也会发生这种情况。

您可以生成所需的初始鼠标单击,以便可以通过如下方式访问小部件:

robot = wx.UIActionSimulator() 
self.browser.SetFocus() 
position = self.browser.GetPosition() 
position = self.browser.ClientToScreen(position) 
robot.MouseMove(position) 
robot.MouseClick() 

wx.UIActionSimulator 是一个类,允许像机器人一样生成用户事件。通常它用于演示、UI 自动化测试或重播录制的宏。 这里我们用它来进行所需的鼠标点击。 类似的解决方案也适用于 C++。

  1. 我们将焦点设置到小部件上
  2. 我们得到它相对于窗口的左上角位置
  3. UIActionSimulator需要绝对屏幕坐标,因此我们需要转换位置
  4. 我们移动鼠标并点击

通过单击小部件的最左上角的点,不太可能产生不良效果,但并非完全不可能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wx.html2.WebView 和屏幕阅读器 的相关文章

  • Android 上的辅助功能测试自动化

    我最近开始研究 Android 上的自动化辅助功能测试 网络上没有太多信息 有人探索过这个或者目前正在这样做吗 如果是这样 您能分享您的想法 方法吗 似乎 Android 的 uiautomator 依赖于辅助功能来工作 但它不支持测试辅助
  • 使用 aria-label 作为样式选择器的最佳实践

    我正在设计一个表格 其中的表格单元格中带有 非交互式 复选标记 复选标记图标是通过 CSS 添加的 由于其中没有可访问的内容 我添加了一个aria label到它 现在我想知道使用此属性作为 CSS 选择器来添加这些复选标记图标是否是个好主
  • 用于显示名称/值对的适当 HTML 模式是什么?

    我受到我的评论的启发而问这个问题如何设置名称 值对列表的样式以使其看起来像 HTML 表格 https stackoverflow com questions 6985296 how can i style a list of name v
  • Android 辅助功能对讲来说出片段的标题

    有没有办法让 Android 可访问性中的对讲功能在片段事务后说些什么 我基本上希望对讲在切换后说出片段的名称 标题 这些标题设置为操作栏的标题 可以在那里访问吗 用户可以将手指移动到操作栏中的文本顶部来了解他们所在的屏幕 但除非他们已经熟
  • 在 pygame 物理模拟中添加 wxPython GUI 元素

    我做了一个pygame物理模拟 抛射运动 但它缺乏交互性 比如接受发射角度 速度等 我想添加带有增加 减少箭头的输入框 但不知道如何去做 谢谢您的帮助 也许你可以尝试PGU http www pygame org project 108 菲
  • Python GUI 在整个过程完成之前不会更新

    我有一个进程从目录中获取文件并将它们放入列表中 然后它循环迭代该列表 循环的最后一行是它应该更新我的 gui 显示的位置 然后它再次从列表中的下一项开始循环 我的问题是 在整个过程完成之前 它实际上不会更新 gui 这取决于列表的大小 可能
  • css设置speak:none现在相当于aria-hidden =“true”吗?

    我只是想知道我是否应该期望 2015 年 1 月左右的浏览器和辅助技术以相当于设置 aria hidden true 的方式使用spoke none 我想指出一些半不透明的文本应该被忽略 并且想知道我是否可以在一次操作中完成它 只需添加一个
  • pythonw.exe 没有响应

    我现在已经学习了一点Python2 7 顺便说一句 我使用的是 Windows 7 64 位 我开始学习 GUI 并一直尝试使用 wxpython 和 IDLE 来实现此目的 所以我输入一些代码 import wx app wx App w
  • wxPython 上的 IPython

    我一直在尝试找到一种方法 让 IPython Shell 能够在wx Frame 在库代码或 Google 中搜索 基于 wxPython 的 IPython 小部件 https www google com search q wxPyth
  • iOS Voice Over 和 Android 无法播报 Span 标签中的文本

    我们希望屏幕阅读器在节点关闭后宣布 项目已关闭 有趣的是 Chrome 上的 NVDA 正确地播报了该消息 而 Android 和 iOS Voice Over 则未能播报此消息 这是打字稿代码 HostListener keydown t
  • 如何引导用户为我的应用程序启用辅助功能服务

    我知道不可能以编程方式启用应用程序的辅助功能服务 因此我想将用户引导至此屏幕 System settings gt Accessibility gt app name gt enable disable screen 那可能吗 您可以将它们
  • 应用程序的外观 - Py2exe / wxPython

    所以我的问题是我的应用程序的外观和感觉 因为它看起来像一个旧的外观应用程序 它是一个 wxPython 应用程序 在 python 上它运行良好并且看起来不错 但是当我使用 py2exe 将其转换为 exe 时 外观很糟糕 现在我知道如果你
  • event.getSource() 返回 null android 中的可访问性

    我尝试使用 DashLane 等辅助服务或其他一些使用辅助服务的应用程序来填充 EditText 字段 我正在使用聚焦事件视图 当 EditText 获得焦点时 事件开始但是getSource 返回空值 Code Accessibility
  • 自定义绘制的 UITableViewCell 中的可访问性

    当您进行自定义绘图时 UITableViewCells 滚动速度会显着提高 但是辅助功能会中断 应该如何向这样的单元添加辅助功能支持 老问题了 但 iOS 已经内置了对这种辅助功能的支持 看看UIAccessibilityContainer
  • Cocoa Accessibility API,我可以单击后台窗口而不激活它吗?

    我一直在寻找解决这个问题的方法 所以我想我应该寻找比我更伟大的头脑 我正在开发一个 Cocoa 应用程序 它使用 Accessibility API 来操作另一个程序 它是一个热键应用程序 我控制的应用程序通常会打开多个窗口 其中一些窗口隐
  • 无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件

    我目前正在尝试将 GPS 坐标绘制为地图上的标记 并在 wxPython 中显示结果 我使用 folium 绘制坐标标记并生成 HTML 文件 import folium fmap folium Map 43 5321 172 6362 z
  • 如何在运行仅 iPhone 应用程序(非通用)的 iPad 上的 UIPickerView 中支持 VoiceOver?

    一般来说 我会查看 Apple 的 UICatalog 示例代码以获取基本的 VoiceOver 支持 但示例代码中似乎有对 UIPickerViews 的 VoiceOver 支持 我是否需要在某处提供accessibilityLabel
  • “ActionBarDrawerToggle”何时显示其“openDrawerContentDescRes”和“closeDrawerContentDescRes”字符串?

    背景 ActionBarDrawerToggle 的CTOR是这样的 public ActionBarDrawerToggle Activity activity DrawerLayout drawerLayout int openDraw
  • 有没有办法编写屏幕阅读器会忽略的内容?

    我刚刚开发了一个需要视力正常和视障用户都可以访问的页面 内容的某些元素仅与视觉元素相关 因此根本不适用于使用屏幕阅读器的人 例如 链接在新窗口中打开视听演示文稿 但由于我无法控制的情况 窗口的大小被笨拙地调整 因此有一条消息说您应该调整窗口
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat

随机推荐

  • PHP/MySQL - SQL 语法错误?

    现在当我提交角色时 当我提交单词时 我收到下面列出的以下错误 除此之外一切正常 我在用htmlentities 我仍然收到此错误 如何防止此错误发生 有没有办法可以允许 转换或停止该字符 表单显示为错误 这是我得到的错误 You have
  • 在节点中使用 apollo -(无反应)

    我想使用 apollo 进行一些批量更新 我需要从节点启动批处理脚本 例如node myscript js 我不知道该怎么做 是否有一个简单的示例可以执行入门中描述的操作 https www apollographql com docs r
  • 如何使用存储库接口在 Spring Data 中通过其嵌套对象的 objectId 查找集合?

    我在 MongoDB 中有一个集合 其中包含如下项目 id ObjectId 53e4d31d1f6b66e5163962e3c name bob nestedObject id ObjectId 53f5a623cb5e4c1ed4f6c
  • 在适用于 iOS 的 HTML5 中包含 SVG

    我想在 HTML5 网页中包含 SVG 图像 通过 JavaScript 与此 SVG 交互 并应用 CSS 样式 如果可能的话 我更愿意将 SVG 保存在单独的文件中 我希望能够离线使用该网页 因此希望推荐的任何解决方案都与此兼容 请有人
  • 使用通用键值对对字典列表列表中的值求和

    如何对字典列表列表中的重复元素求和 样本清单 data user 1 rating 0 user 2 rating 10 user 1 rating 20 user 3 rating 10 user 4 rating 4 user 2 ra
  • Android 5.1推送通知图标为空白

    当使用 Parse 进行推送通知时 我们的应用程序始终显示应用程序的启动器图标 在最新的 Android 5 1 版本中 该图标显示为空白 白色方块 我尝试在元数据中设置图标
  • 如何在 Bash 中将 `4-7` 替换为 `4,5,6,7`

    Goal 我有一根长绳子s它表示由逗号和破折号分隔的一系列数字 见下文 当多个数字彼此跟随时 将写入两个极端数字并用破折号分隔 例如 该系列4 5 6 7写成4 7 我的目标是扩展这个字符串 使所有数字都用逗号分隔 4 7应该成为4 5 6
  • C# 获取 XML 标签值

    我有一个名为BackupManager xml
  • 如何防止任务管理器中的应用程序被杀死?

    我正在开发一个家长控制应用程序 用 WPF 编写 并且希望禁止任何人 包括管理员 终止我的进程 不久前 我在网上发现了以下代码 它几乎可以完美运行 只是有时不起作用 static void SetAcl var sd new RawSecu
  • ReactJS 如何在 React 中切换页面?

    因此 来自 Angular AngularJS 背景的人有状态 每个状态都是一个单独的页面 例如 在社交网络中 您可以有一个包含您的提要的状态 一个包含您的朋友列表的状态 或者一个查看个人资料的状态等 非常简单 对我来说 React 没有那
  • 在屏幕中央启动 Facebook 共享弹出窗口

    以下代码运行良好 并在屏幕上启动 Facebook 弹出窗口 但该弹出窗口未居中 a href http www facebook com share php u a
  • JavaScript 将
    替换为 \n

    我刚刚使用 JavaScript 和 PHP 在 MySQL 数据库中存储了一段文本并替换 n with br 我现在遇到的问题是 当我尝试使用 PHP 检索文本时 它会将其打印出来 br Dear Sir Maddam br This i
  • Django 动态 OR 查询

    我有一个MultipleChoiceField在保存汽车制造商的表格上 我想将我的汽车数据库过滤到已检查的品牌 但这会导致问题 我如何获得所有Q make 动态声明 我如何开始 value1 value2 我想如何结束 Q col valu
  • html 中的大括号和百分号是什么意思?

    我正在学习如何在 Django 框架中开发网站 我对模板 html 文件有一些不明白的地方 我看到教程使用了大括号 等 将逻辑嵌入到代码中 但是当我尝试在非 Django 服务器 Apache 中使用此语法时 此语法未被解释 我可以看到我的
  • 为nginx添加LUA模块

    我在 redhat 7 5 服务器上 rpm 安装了 nginx 1 12 它还有 LUA 5 1 4 我下载了 lua nginx module 0 10 13 tar ball 并将其放在 etc nginx modules 下 但我无
  • 如何让jni.h被发现?

    在Ubuntu 12 04中 我安装了来自sun oracle的jdk7 什么时候locate jni h 它打印多个位置 usr lib jvm java 6 openjdk amd64 include jni h usr lib jvm
  • 如何将 Python 字典树化?

    我正在构建一个电报机器人 并且想要转换 json 响应 例如下面我将其转换为字典的响应 message id 445793 from id 106596774 is bot false first name Komron last name
  • C 程序在不设置 LD_LIBRARY_PATH 的情况下链接共享库

    我正在阅读 GCC 简介 它说一个包是否同时包含 a 和 so gcc 更喜欢共享库 默认情况下 加载程序仅在一组预定义的系统目录中搜索共享库 例如 usr local lib and usr lib 如果库不位于这些目录之一 则必须将其添
  • 如何在 swift 中制作可设计的文本字段代码类

    我是编程和 iOS 开发的初学者 我想制作一个 swift 文件 其中包含用于制作可设计文本字段的代码 因此我不会通过编码来编辑 UI 元素显示 所有将要编辑的 UI 我将在 Interface builder 中编辑它 我需要在 UITe
  • wx.html2.WebView 和屏幕阅读器

    在 wxPython 4 0 Phoenix 中 我尝试将 wx html2 WebView 与屏幕阅读器一起使用 无论是使用 JAWS 还是 NVDA 我都必须在小部件上单击鼠标左键才能在可访问的 Web 界面中查看我的页面 这是我的代码