我有一个 HPaned,它的一个子元素经常更改其大小要求,因为它的文本发生了变化。结果是每次文本更改时 Pane 都会移动。我想重写 Paned.compute_position 方法,以便子级的大小不会减小,只会增加。但是,我找不到覆盖它的方法。偶数
class MyHPaned(gtk.HPaned):
def do_compute_position(self, allocation, child1_req, child2_req):
print "Hi"
return gtk.HPaned.compute_position(self, allocation, child1_req, child2_req)
gobject.type_register(MyHPaned)
不起作用。你有什么建议吗?谢谢!
最佳答案
覆盖gtk_paned_compute_position
这是不可能的,因为该函数在 GTK 本身中不是虚拟的。另外,gtk_paned_compute_position
被标记为内部且已弃用,并且不会从 GTK+-2.24.x 源的任何地方调用。我怀疑它只是导出以便您可以找出分隔符的位置,而不是通过覆盖来影响它。
而不是尝试覆盖 HPaned.compute_position
,您应该在 Pane 中放置一个单子(monad)容器(例如 gtk.Bin
的子容器),该容器通过挂接到 size-allocate
来实现所需的大小调整策略。信号和调用set_size_request
与所需的尺寸。 HPaned 将自动遵守这一点。
关于python - pygtk:覆盖 gtk.Paned.compute_position,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20991014/