我正在开发一个带有奇特外观的GtkTreeView的Python + Gtk3应用程序:
对于有视力的用户来说,这非常有用,但这就是Orca(屏幕阅读器)在树视图中对行所说的内容: “Image,Devhelp,Collapsed,9.2 MB”
当然有一些问题。首先,它没有提到每行的复选框,因为我将三个单元格渲染器打包到一列中。这三个是可用的,但由于某种原因,Orca没有提到复选框,因为它深埋了。同时,它提到的图像是最左边的图像,通常是空的,但有时是“需要重新启动”指示。当然,盲人用户,就像有视力的用户一样,不会在乎它是一张图像。
我想要做的是查看描述此表的辅助功能对象,以使它们更有用。使用Accerciser,我可以看到它们存在,但它们似乎都是用私有的,未记录的类(如GtkTreeViewAccessible)实现的,它们看起来并不是非常可扩展,但我希望我错了。知道树视图的可访问对象在某个级别是AtkTable,我做了以下操作来为备份行中的图像单元格设置可访问的描述:
access = self.treeview_update.get_accessible()
cell_access = access.ref_at(0,0)
cell_access.set_image_description("Requires system restart")
(Orca在说完描述后仍然说“Image”,但我会假设它知道它在做什么)。
但是,该代码不是很好。当我调用access.ref_at时,我对GTK如何将单元格位置映射到ATK对象中的行和列做出了特殊的假设。当我第一次填充这棵树时,我也只能打电话给我,我不确定这是否特别合理。
所以有我的问题:我希望以一种不会意外破坏的好方式为我的树视图单元格添加可访问的描述。我怎么能这样做?