我在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
答案 0 :(得分:3)
子窗口小部件在成为“可见子项”之前需要可见(如Widget.get_visible()
中所示)。在代码的这一点上不是这种情况(虽然它实际上在显示窗口时才起作用),但如果你在将子窗口小部件添加到堆栈之前只做my_child_widget.set_visible (True)
,get_visible_child()
应该开始工作。
不是最好的设计,因为set_visible_child*
函数完全无声地失败...