Python pygtk:覆盖gtk.Paned.compute_位置
我有一个HPANE,它的一个孩子经常改变它的尺寸要求,因为它的文本会改变。结果是,每次更改文本时,窗格都会移动。我想重写Paned.compute_position方法,这样子对象的大小就不会减小,而是增大。但是,我找不到一种方法来覆盖它。甚至Python pygtk:覆盖gtk.Paned.compute_位置,python,pygtk,Python,Pygtk,我有一个HPANE,它的一个孩子经常改变它的尺寸要求,因为它的文本会改变。结果是,每次更改文本时,窗格都会移动。我想重写Paned.compute_position方法,这样子对象的大小就不会减小,而是增大。但是,我找不到一种方法来覆盖它。甚至 class MyHPaned(gtk.HPaned): def do_compute_position(self, allocation, child1_req, child2_req): print "Hi" r
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
,您应该在窗格中放置一个子容器(例如gtk.Bin
的子容器),该容器通过挂接size allocate
信号并调用set_size_request
来实现所需的大小调整策略。HPaned将自动遵守此要求。谢谢您的回答!我猜另一种选择是将子对象放入gtk.Alignment中,并在子对象发送大小分配信号时更改其大小请求。不管怎样,我意识到我可以接受一个固定的请求,所以我让我的孩子与一个固定宽度的请求对齐。