2011-11-01 9 views
2

我有一個gtk.IconView中有幾個圖標。有時我會調整窗口大小以查看更多圖標。當我這樣做時,生成的額外空間不會在所有列之間均勻分佈。取而代之的是,這一切都被放到了正確的位置,直到有足夠的空間存放新的專欄。如何使IconView中的圖標均勻分佈?

我在the documentation中沒有看到任何能讓我自動執行此操作的任何東西。我是否需要檢查調整大小信號,然後手動設置列間距和行間距?如果是這樣,我使用哪個調整大小信號。

下面是我的意思。我用紅色標出了額外的空間。

enter image description here

這是我想看到什麼(當然,實際上有均勻分佈的空白,不像我那可憐的MS油漆工作)。

enter image description here

+0

中有你,任何機會,想出了一些解決方案? – rafalcieslak

+0

@rafalcieslak不,這是一個低優先級。這可能不可能,因爲手動設置行間距可能不會真正解決問題。我沒有看過它,對不起。 –

回答

1

我們在Ubuntu Accomplishments Viewer中遇到過這個問題,當我們設法解決它時,我將介紹我們的解決方案。

訣竅是將GtkIconView放在GtkScrolledWindow中,並將它的hscrollbar_policy設置爲「always」。然後,必須使用檢查調整大小信號,以在用戶調整窗口大小時作出反應(注意,如果大小已改變,則必須檢查其大小是否改變,因爲例如當窗口被拖動時也發出信號)。當大小改變時,GtkIconView使用的模型必須被清除並重新創建,因爲這會觸發GtkIconView正確地重新分配新獲得的空間(或縮小)。 另外,因爲GtkIconView使用GtkScrolledWindow使用的那麼多空間,所以水平滾動條永遠不會被看到。

0

葉氏,這是一個非常胖的樣子,你需要做的是在自己的後似乎。並重新檢查信號,我會檢查GtkContainer ::檢查調整大小

0

使用event size_allocate。

我定義我的課:

class toto(Gtk.IconView): 
    def __init__(self): 
     super(toto,self).__init__() 
     self.connect("size_allocate",self.resize) 
     self.set_columns(4) 

然後我修改工作列

def resize(self,_iv,_rect): 
    print("X",rect.x) 
    print("Y",rect.y) 
    print("W",rect.width) 
    print("H",rect.height) 
    # calculate number of columns, let's say 3 
    _cols=3 
    self.set_columns(_cols) 

的人數似乎爲我工作