让kivy小部件同时格式化和更新

时间:2013-11-10 20:54:36

标签: python user-interface kivy

我很难理解布局和应用程序如何在kivy中协同工作。我正在尝试为基本股票代码构建一个简单的ui。我的数据模块将交回当前价格的字典:xxx,最后价格:xxx,更改:xxx

我很想在kivy中显示这些信息,让它通过时钟表自动更新。我玩了很多标签并让他们进行民意调查。这很有效,但我无法找到一种简洁的方式来格式化它们。我无法让GridLayout工作。

我现在正在尝试获取ListView,但它不会在屏幕上显示任何内容。这让我疯狂。有人有一个很好的演练,显示前端和后端在kivy上的关系吗?文档并没有真正涉及到这一点,我找不到任何代码示例。

这就是我所拥有的(注意:ListWidget的更新运行,我在控制台中看到它的输出,但ui窗口中没有任何内容)。

class ListWidget(ListView):
    def update(self, dt):
        day = datetime.datetime.now().strftime('%d %S')
        hour = datetime.datetime.now().strftime('%H %S')
        print hour

        self.data = [day, hour]


class MainView(GridLayout):
    def __init__(self, **kwargs):
        kwargs['cols'] = 2
        kwargs['size_hint'] = (1.0, 1.0)
        super(MainView, self).__init__(**kwargs)


class MainApp(App):
    def build(self):
        main = MainView()
        list_widget = ListWidget()
        list_widget.data = ['date', 'time']
        main.add_widget(list_widget)
        Clock.schedule_interval(main.children[0].update, 1)

        return main

if __name__ == '__main__':
    main = MainApp()
    main.run()

1 个答案:

答案 0 :(得分:0)

我知道这个问题很老但是这里是修改过的代码,就是在Widget上添加一个带有当前值的标签,这可能对某人有帮助。

class ListWidget(ListView):

    def update(self, dt):
        day = datetime.now().strftime('%d %S')
        hour = datetime.now().strftime('%H %S')
        print hour

        self.clear_widgets()
        self.add_widget(Label(text=hour), 0)


        self.data = [day, hour]


class MainView(GridLayout):
    def __init__(self, **kwargs):
        kwargs['cols'] = 2
        kwargs['size_hint'] = (1.0, 1.0)
        super(MainView, self).__init__(**kwargs)


class MainApp(App):
    def build(self):
        main = MainView()
        list_widget = ListWidget()
        list_widget.data = ['date', 'time']
        main.add_widget(list_widget)
        Clock.schedule_interval(main.children[0].update, 1)

        return main

if __name__ == '__main__':
    main = MainApp()
    main.run()