2014-03-04 39 views
0

我在PyGobject中使用了一個Gtk.Stack小部件,因爲我找不到任何有關如何使用它們的「教程」,所以我認爲Gtk.Stack的每個元素都有一個名稱/標記。GTK命名堆棧孩子

,所以我做了一些元素和連接到堆棧:

add_named(element_to_add_to_stack, "Element_tag") 

他們的拳頭已連接併成功地出現了,但每當我設置的另一個爲可見有:

set_visible_child_name("Element_tag") 

沒有任何反應,並且在檢索到哪些元素是堆棧的一部分之後:

stack.get_visible_child() 

它只是返回

有什麼不對?就是這樣使用Gtk.Stack錯誤?

編輯:

def main_content(self): 
    right_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) 
    self.stack = Gtk.Stack() 
    self.stack.get_style_context().add_class("main-container") 
    self.stack.props.margin = 20 
    self.stack.add_named(self.gen_page1(), "page1") 
    self.stack.add_named(self.gen_page2(), "page2") 
    self.stack.add_named(self.gen_page3(), "page3") 
    #self.stack.set_visible_child_name("page2") 
    #self.stack.set_visible_child_full("page2", 1) 
    print((self.stack.get_visible_child())) 

    right_box.pack_start(self.stack, True, True, 0) 
    return right_box 
+0

你能表現出更多的代碼。我懷疑別的東西是錯的。 – drahnr

+0

@drahnr完成。註釋的代碼函數都不起作用。 打印返回「無」 – SOMN

回答

3

的子部件必須是可見的(如在Widget.get_visible())之前,它可以是一個「看得見的孩子」。在代碼的這一點上情況並非如此(儘管實際顯示窗口時它會工作),但如果在將子窗口小部件添加到堆棧之前執行my_child_widget.set_visible (True),則get_visible_child()應該開始工作。

不是最大的設計確實爲set_visible_child*功能未能完全安靜的...

+0

謝謝。我雖然每個元素默認都是可見的。事實上,如果出現這樣的失敗,它可能會輸出一些東西給你,這會很好,並且節省很多時間。 – SOMN

+0

是的,默認情況下不可見的小部件是一件煩人的遺留問題。作爲參考,文檔只是固定地說:「請注意@child小部件本身必須可見(請參閱gtk_widget_show())以成爲@stack的可見子項」。 – jku