2014-01-08 22 views
1

我有一個HPAned,其中一個子項經常改變其大小要求,因爲它的文本更改。結果是每次更改文本時窗格都會移動。我想重寫Paned.compute_position方法,以便孩子的大小不會減少,只是增加。但是,我找不到覆蓋它的方法。即使pygtk:覆蓋gtk.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) 

不起作用。你有什麼建議嗎?謝謝!

回答

1

覆蓋gtk_paned_compute_position是不可能的,因爲該功能在GTK本身中不是虛擬的。此外,gtk_paned_compute_position被標記爲內部並已棄用,並且不會從GTK + -2.24.x源中的任何地方調用。我懷疑它只是出口,所以你可以找出分隔符的位置,而不是通過覆蓋來影響它。

而是試圖覆蓋HPaned.compute_position的,你應該放到實現掛接到的size-allocate信號和呼叫set_size_request與所需的大小所需的調整政策窗格的單子容器(如一個的孩子gtk.Bin)。 HPaned會自動遵守此規定。

+0

感謝您的回答!我想另一種選擇是將孩子放在gtk.Alignment中,並在孩子發送大小分配信號時更改其大小請求。無論如何,我意識到我只需要一個固定的請求就可以了,所以我把我的孩子放在一個具有固定寬度請求的對齊中。 – Noam