Wxpython wx.html2.WebView和屏幕阅读器
在wxPython 4.0 Phoenix中,我尝试将wx.html2.WebView与屏幕阅读器一起使用 无论是JAWS还是NVDA,我都必须用鼠标左键单击小部件,才能在可访问的Web界面中查看我的页面 这是我的代码,但是要知道我在LoadURL方法上也有同样的问题 我是否应该添加一些内容,以便小部件一显示,焦点就直接出现在web界面上 提前感谢您的回答Wxpython wx.html2.WebView和屏幕阅读器,wxpython,accessibility,Wxpython,Accessibility,在wxPython 4.0 Phoenix中,我尝试将wx.html2.WebView与屏幕阅读器一起使用 无论是JAWS还是NVDA,我都必须用鼠标左键单击小部件,才能在可访问的Web界面中查看我的页面 这是我的代码,但是要知道我在LoadURL方法上也有同样的问题 我是否应该添加一些内容,以便小部件一显示,焦点就直接出现在web界面上 提前感谢您的回答 import wx import wx.html2 class MyWebView (wx.Dialog): def __ini
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()
导入wx
导入wx.html2
类MyWebView(wx.Dialog):
定义初始化(自身,父级):
wx.Dialog.\uuuuu init\uuuuuuuuux(自,父)
sizer=wx.BoxSizer(wx.VERTICAL)
self.browser=wx.html2.WebView.New(self)
self.changeBtn=wx.按钮(self,-1,label=“更改页面”)
#我要显示的页面以元组的形式进行处理。
self.pages=(
“大家好!我们正在用屏幕阅读器测试wx.html2.WebView!”,
“第二页!这是第二页”,
“第三页!这是第三页”
)
self.index=0
self.display=self.pages[self.index]
sizer.Add(self.browser,1,wx.EXPAND,10)
sizer.Add(self.changeBtn)
自整定器(施胶器)
自我设置大小((700700))
#事件。
self.changeBtn.Bind(wx.EVT_按钮,self.onChangePage)
def onChangePage(自我,evt):
自索引+=1
如果self.index==len(self.pages):
self.index=0
self.display=self.pages[self.index]
self.browser.SetPage(self.display,“”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app=wx.app()
dialog=MyWebView(无)
dialog.browser.SetPage(dialog.display,“”)
dialog.Show()
app.MainLoop()
亲切问候。在windows下,由于Internet explorer服务器存在奇怪的错误,您实际上需要单击小部件中的某个位置,以便屏幕阅读器可以与之交互。 一旦完成了最初的点击,屏幕阅读器就可以完美地使用这个小部件 <注意,同样的问题仍然发生在C++中的最新WXWIDGES3.1.3。 事实上,wxWidgets和wxPython都不对这个错误负责。直接使用ActiveX和Win32 API嵌入Internet Explorer服务器时也会发生这种情况 您可以生成所需的初始鼠标单击,以便通过以下方式访问小部件:
robot = wx.UIActionSimulator()
self.browser.SetFocus()
position = self.browser.GetPosition()
position = self.browser.ClientToScreen(position)
robot.MouseMove(position)
robot.MouseClick()
UIActionSimulator是一个类,允许像机器人一样生成用户事件。通常,它用于演示、UI自动测试或回放录制的宏。
在这里,我们使用它使所需的鼠标点击。
类似的解决方案也适用于C++。
通过单击小部件最左上角的点,不太可能产生不想要的效果,但也并非完全不可能。在windows下,由于Internet explorer服务器存在奇怪的错误,您实际上需要单击小部件中的某个位置,以便屏幕阅读器可以与其交互。 一旦完成了最初的点击,屏幕阅读器就可以完美地使用这个小部件 <注意,同样的问题仍然发生在C++中的最新WXWIDGES3.1.3。 事实上,wxWidgets和wxPython都不对这个错误负责。直接使用ActiveX和Win32 API嵌入Internet Explorer服务器时也会发生这种情况 您可以生成所需的初始鼠标单击,以便通过以下方式访问小部件:
robot = wx.UIActionSimulator()
self.browser.SetFocus()
position = self.browser.GetPosition()
position = self.browser.ClientToScreen(position)
robot.MouseMove(position)
robot.MouseClick()
UIActionSimulator是一个类,允许像机器人一样生成用户事件。通常,它用于演示、UI自动测试或回放录制的宏。
在这里,我们使用它使所需的鼠标点击。
类似的解决方案也适用于C++。