刷新窗口内容

时间:2014-03-05 20:32:26

标签: python python-3.x gtk gtk3

我正在开发一个基于PyGobject的演示程序,它的界面部分就像库存管理一样,应该每隔几秒刷新一次。该程序需要能够在保持显示信息正确的同时全天候运行。

我有一个容器,其内容在堆栈中(并且在它们之间有单独的标签可以更改):

    def main_content(self):
        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.child1_child = self.child1()
        self.child1_child.set_visible(True)
        self.stack.add_named(self.child1_child, "Child1")

        self.child2_child = self.child2()
        self.child2_child.set_visible(True)
        self.stack.add_named(self.child2_child, "Child2")

        self.child3_child = self.child2()
        self.child3_child.set_visible(True)
        self.stack.add_named(self.child3_child, "Child3")

        box.pack_start(self.stack, True, True, 0)
        if self.redraw:
            print("Redrawing")
        self.redraw = True
        return box

因此,有一些函数可以生成每个堆栈成员,它们被分配给变量,然后设置为可见并添加到堆栈中。

让我们假设堆栈Child1有一个股票列表,我不希望它有超过5分钟的延迟。我尝试进行重绘功能,其中列表正在制作选项卡,此重绘功能由 timeout_add 或标签点击引发:

    def redraw(self):
        selected_stack = self.listbox.get_selected_row().get_index()

        # **Possible** solution:
        stack_elements = {0: "Child1", 1: "Child2", 2: "Child3"}
        variables = {0: "child1_child", 1: "child2_child", 2: "stock_child"}
        self.variables[janela].destroy()
        self.variables[janela] = self.stack_elements[janela].lower()
        self.variables[janela].set_visible(True)
        self.stack.add_named(self.variables[janela], stack_elements[janela])
        # Problems: Doesn't works as python code. Just an idea

        # **Possible** solution 2:
        self.stack.destroy()
        self.stack = Gtk.Stack()
        self.stack_content = self.main_content()
        self.main_box.pack_start(self.stack_content, True, True, 0)

这些只是一些尝试错误的想法,我从来没有建立一个需要不断更新的界面,是否有任何正确的方法,或者一种方式让我的方式之一工作?

0 个答案:

没有答案