2014-03-04 41 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