Python GTK命名为stack childs

Python GTK命名为stack childs,python,gtk,gtk3,pygobject,Python,Gtk,Gtk3,Pygobject,我在PyGobject中使用了一个Gtk.Stack小部件,由于我找不到任何关于如何使用它们的“教程”,我认为Gtk.Stack的每个元素都有一个名称/标记 因此,我制作了一些元素,并通过以下方式连接到堆栈: add_named(element_to_add_to_stack, "Element_tag") 他们中的第一个被连接并成功出现,但每当我将另一个设置为可见时: set_visible_child_name("Element_tag") 什么也不发生,在检索了哪些元素是堆栈的一部分之

我在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的方法是错误的吗

编辑:


子小部件必须是可见的(如
小部件。get_visible()
),然后才能成为“可见的子部件”。在代码的这一点上并非如此(虽然它只在实际显示窗口时才起作用),但如果在将子窗口小部件添加到堆栈之前执行
my\u child\u widget.set\u visible(True)
,则
get\u visible\u child()
应该开始工作


这并不是最好的设计,因为
set\u visible\u child*
函数完全无声地失败…

子部件必须是可见的(如
小部件。get\u visible()
),才能成为“可见的子部件”。在代码的这一点上并非如此(虽然它只在实际显示窗口时才起作用),但如果在将子窗口小部件添加到堆栈之前执行
my\u child\u widget.set\u visible(True)
,则
get\u visible\u child()
应该开始工作


这并不是最好的设计,因为
set\u visible\u child*
函数完全无声地失败…

子部件必须是可见的(如
小部件。get\u visible()
),才能成为“可见的子部件”。在代码的这一点上并非如此(虽然它只在实际显示窗口时才起作用),但如果在将子窗口小部件添加到堆栈之前执行
my\u child\u widget.set\u visible(True)
,则
get\u visible\u child()
应该开始工作


这并不是最好的设计,因为
set\u visible\u child*
函数完全无声地失败…

子部件必须是可见的(如
小部件。get\u visible()
),才能成为“可见的子部件”。在代码的这一点上并非如此(虽然它只在实际显示窗口时才起作用),但如果在将子窗口小部件添加到堆栈之前执行
my\u child\u widget.set\u visible(True)
,则
get\u visible\u child()
应该开始工作


这并不是最好的设计,因为
set\u visible\u child*
函数完全无声地失败…

您能再显示一些代码吗。我怀疑出了什么问题。@Drahner完成了。这两个注释代码函数都不起作用。打印返回“无”,您可以再显示一些代码。我怀疑出了什么问题。@Drahner完成了。这两个注释代码函数都不起作用。打印返回“无”,您可以再显示一些代码。我怀疑出了什么问题。@Drahner完成了。这两个注释代码函数都不起作用。打印返回“无”,您可以再显示一些代码。我怀疑出了什么问题。@Drahner完成了。这两个注释代码函数都不起作用。打印返回“无”,谢谢。我认为默认情况下每个元素都是可见的。事实上,如果出现这样的故障,它可以向sterr输出一些东西,这会很好并且节省很多时间。是的,默认情况下不可见的小部件是一件恼人的遗留问题。为了便于参考,该文档只是固定为“注意@child小部件本身必须可见(请参阅gtk_widget_show()),才能成为@stack的可见子部件”。谢谢。我认为默认情况下每个元素都是可见的。事实上,如果出现这样的故障,它可以向sterr输出一些东西,这会很好并且节省很多时间。是的,默认情况下不可见的小部件是一件恼人的遗留问题。为了便于参考,该文档只是固定为“注意@child小部件本身必须可见(请参阅gtk_widget_show()),才能成为@stack的可见子部件”。谢谢。我认为默认情况下每个元素都是可见的。事实上,如果出现这样的故障,它可以向sterr输出一些东西,这会很好并且节省很多时间。是的,默认情况下不可见的小部件是一件恼人的遗留问题。为了便于参考,该文档只是固定为“注意@child小部件本身必须可见(请参阅gtk_widget_show()),才能成为@stack的可见子部件”。谢谢。我认为默认情况下每个元素都是可见的。事实上,如果出现这样的故障,它可以向sterr输出一些东西,这会很好并且节省很多时间。是的,默认情况下不可见的小部件是一件恼人的遗留问题。为了便于参考,文档只是固定为“注意@child小部件本身必须可见(请参见gtk_widget_show()),才能成为@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