4

我正在开发一个带有漂亮 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 对象中的行和列做出了特定的假设。当我第一次填充树时,我也仅限于调用它,我不确定这是否特别理智。

所以这是我的问题:我想以一种不会意外中断的好方式为我的树视图单元格添加可访问的描述。我怎样才能做到这一点?

4

0 回答 0