0

我很难理解布局和应用程序如何在 kivy 中协同工作。我正在尝试为基本的股票代码构建一个简单的用户界面。我的数据模块将返回当前价格的字典: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()
4

1 回答 1

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()    
于 2016-07-04T16:46:38.663 回答