PyGTK - 轮询小部件位置的GTK表

时间:2010-09-13 20:09:35

标签: python gtk

我正在研究一个涉及使用GTK表的Python应用程序。该应用程序要求将各种大小的小部件动态添加到表中。因此,我需要能够向表格询问正在使用的单元格(更准确地说,未使用),以便我知道在哪里可以放置新的小部件而不会重叠。

根据参考手册(http://www.pygtk.org/docs/pygtk/)中的信息,我无法找到直接从表中获取信息的方法。我能想到的唯一另一个选择是创建一个包含已使用单元格信息的地图对象,并在对表格进行更改时对其进行更新。

因为我确定有人在我面前处理了这个问题,并且我希望GTK能提供更好的方法,所以在尝试实施地图之前询问周围似乎是明智的。

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

此函数应该为您提供表中的一组空闲单元格:

def free_cells(table):
    free_cells = set([(x,y) for x in range(table.props.n_columns) for y in range(table.props.n_rows)])

    def func(child):
        (l,r,t,b) = table.child_get(child, 'left-attach','right-attach','top-attach','bottom-attach')
        used_cells = set([(x,y) for x in range(l,r) for y in range(t,b)])
        free_cells.difference_update(used_cells)

    table.foreach(func)

    return free_cells

它从一组所有表格单元格开始,然后遍历表格的子节点,删除每个子节点占用的单元格。

答案 1 :(得分:0)

我是原始海报,在发布问题时登录了错误的帐户。

无论如何,这似乎正是我正在寻找的!谢谢杰夫!