PyGTK - 获取GTK表中小部件位置的轮询方法

0 投票
2 回答
542 浏览
提问于 2025-04-16 04:06

我正在开发一个使用GTK表格的Python应用程序。这个应用需要动态地向表格中添加不同大小的组件。为了做到这一点,我需要知道表格中哪些单元格正在被使用(更准确地说,是哪些单元格没有被使用),这样我才能知道在哪里放置新的组件而不会重叠。

根据参考手册中的信息(http://www.pygtk.org/docs/pygtk/),我找不到直接从表格获取这些信息的方法。我能想到的唯一其他办法就是创建一个地图对象,用来保存已使用单元格的信息,并在表格发生变化时更新它。

因为我相信在我之前就有人遇到过这个问题,而且我希望GTK能提供更好的解决方案,所以在尝试实现这个地图之前,向大家请教一下似乎是个明智的选择。

非常感谢大家的帮助。

2 个回答

0

我是最开始发帖的人,发问题的时候登录错了账号。

不过,这看起来正是我想要的!谢谢你,Geoff!

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

它一开始会把所有的表格单元格都放在一起,然后逐个检查表格里的每个孩子,去掉那些被孩子占用的单元格。

撰写回答