GTK命名为堆栈子

时间:2014-03-04 17:14:21

标签: python gtk gtk3 pygobject

我在PyGobject中使用Gtk.Stack小部件,因为我找不到任何关于如何使用它们的“教程”,我认为Gtk.Stack的每个元素都有一个名称/标签。

所以我做了一些元素并连接到堆栈:

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

1 个答案:

答案 0 :(得分:3)

子窗口小部件在成为“可见子项”之前需要可见(如Widget.get_visible()中所示)。在代码的这一点上不是这种情况(虽然它实际上在显示窗口时才起作用),但如果你在将子窗口小部件添加到堆栈之前只做my_child_widget.set_visible (True)get_visible_child()应该开始工作。

不是最好的设计,因为set_visible_child*函数完全无声地失败...