PyGTK - 获取GTK表中小部件位置的轮询方法
我正在开发一个使用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
它一开始会把所有的表格单元格都放在一起,然后逐个检查表格里的每个孩子,去掉那些被孩子占用的单元格。