Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygtk:覆盖gtk.Paned.compute_位置_Python_Pygtk - Fatal编程技术网

Python pygtk:覆盖gtk.Paned.compute_位置

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

我有一个HPANE,它的一个孩子经常改变它的尺寸要求,因为它的文本会改变。结果是,每次更改文本时,窗格都会移动。我想重写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
,您应该在窗格中放置一个子容器(例如
gtk.Bin
的子容器),该容器通过挂接
size allocate
信号并调用
set_size_request
来实现所需的大小调整策略。HPaned将自动遵守此要求。

谢谢您的回答!我猜另一种选择是将子对象放入gtk.Alignment中,并在子对象发送大小分配信号时更改其大小请求。不管怎样,我意识到我可以接受一个固定的请求,所以我让我的孩子与一个固定宽度的请求对齐。