为Python程序添加屏幕阅读器无障碍功能,解决PySimpleGui文本NVDA无法识别问题
PySimpleGUI Windows程序NVDA屏幕阅读器适配方案
问题原因
你遇到的读取失效问题是默认配置下,PySimpleGUI的输入控件没有关联可访问性标识,NVDA基于Windows UIA/MSAA接口读取控件信息时,无法将输入框和旁侧的提示文本做关联,因此无法读出对应的问题内容。
具体修复步骤
- 第一步:升级到PySimpleGUI 4.60.0及以上版本,该版本开始原生支持Windows平台可访问性参数配置
- 第二步:全局开启可访问性支持,在初始化布局前添加配置
- 第三步:给所有交互控件添加
accessible_name属性,属性值和对应提示文本完全一致即可
代码示例
原错误写法(NVDA无法识别)
import PySimpleGUI as sg # 无 accessibility 配置 layout = [ [sg.Text("请输入CPU型号:"), sg.Input(key="-CPU-")], [sg.Text("请输入内存容量:"), sg.Input(key="-RAM-")], [sg.Button("提交")] ] window = sg.Window("硬件信息采集", layout)
适配后写法(NVDA可正常读取)
import PySimpleGUI as sg # 开启Windows平台可访问性支持 sg.set_options(enable_accessibility=True) layout = [ [sg.Text("请输入CPU型号:"), sg.Input(key="-CPU-", accessible_name="请输入CPU型号")], [sg.Text("请输入内存容量:"), sg.Input(key="-RAM-", accessible_name="请输入内存容量")], [sg.Button("提交", accessible_name="提交硬件信息")] ] window = sg.Window("硬件信息采集", layout)
额外注意事项
- 单选框、复选框、下拉选择框等其他交互控件都需要补充
accessible_name属性 - 如果提示文本有动态更新,需要同步更新对应控件的
accessible_name,更新语法为window["控件KEY"].update(accessible_name="新的提示内容") - 测试时按Tab切换控件,NVDA能正常读出对应提示文本即为适配成功
内容的提问来源于stack exchange,提问作者Russ C
相关产品推荐
相关产品推荐

