使用KV语言中的Kivy Garden Graph

时间:2015-06-13 16:45:54

标签: python graph kivy

如何在kv文件中使用kivy模块garden.graph?我只找到了解释如何在主python脚本中使用它的文档。

我在python文件中导入了kivy.garden.graph,我可以在kv文件中添加Graph,但我没有找到任何文档如何设置大小,图等。

Graph:
    id: graph_test
    plot: MeshLinePlot

这给出了MeshLinePlot is not defined以来的错误,尽管我在python端导入了它。

任何帮助都会受到高度赞赏,也许我们可以将这些信息添加到图表的github自述文件中。

4 个答案:

答案 0 :(得分:2)

以piwnk的答案为基础:

我添加了.kv文件

#:import MeshLinePlot kivy.garden.graph.MeshLinePlot
<SetGraph>:
    graph_test : graph_test
    Graph:
    id: graph_test
    plot: MeshLinePlot
    xlabel:'X'
    ylabel:'Y'
    x_ticks_minor:5
    x_tics_major:25
    y_ticks_major:1
    y_grid_label:True
    x_grid_label:True
    padding:5
    x_grid:True
    y_grid:True
    xmin:-0
    xmax:100
    ymin:-1
    ymax:1
    pos: 0, root.height / 6
    size: root.width * 2 / 3 , root.height * 18 / 24

在main.php中我添加了

from math import sin
from kivy.garden.graph import Graph, MeshLinePlot

class SetGraph(Widget):
    graph_test = ObjectProperty(None)

    update_graph(self):
         plot = MeshLinePlot(color=[1, 0, 0, 1])
         plot.points = [(x, sin(x / 10.)) for x in range(0, 101)]
         self.graph_test.add_plot(plot)

class graphLayoutApp(App):
    def build(self):
        disp = SetGraph()
        disp.update_graph()
        return disp



if __name__ == '__main__':
    graphLayoutApp().run()

我已将原始测试解决方案更改为更具描述性的名称。希望我没有犯任何错误。如果解决方案不完整,请告诉我。

答案 1 :(得分:1)

有同样的问题。这是解决方案:

一般来说,根据kivy文档,在kv文件中:

#:import name x.y.z

相当于:

from x.y import z as name

所以你应该使用以下内容:

#:import MeshLinePlot kivy.garden.graph.MeshLinePlot

在我的案例中使用Graph类,但说实话,我还没有设法将这个图添加到图表中。

答案 2 :(得分:0)

我认为 inclement 走在正确的轨道上。使用#:import应该能够导入文件。

将此内容写入kv文件:

#:import MeshLinePlot

它应该能够导入模块,如kv documentation所示,也

答案 3 :(得分:0)

马蒂斯·阿斯(Mattis Asp)的回答非常有帮助,但对我来说却不太有效。我对此并不陌生,所以也许这些事情太明显了,无需说明。但是,如果它对我这一级的人有帮助,我必须:

  1. 在kv文件中缩进Graph:声明下的属性(以解决kv解析器中的“声明后无效数据”异常。

  2. 添加以下内容:

    语言:lang-py

    from kivy.properties import ObjectProperty  
    from kivy.app import App    
    from kivy.uix.widget import Widget  
    

在python文件的顶部。

  1. 命名kv文件以匹配应用程序类定义,因此:graphLayout.kv(我将其称为graph.kv,因此它被忽略了-新手错误!)

  2. 我为graph_test获取了“无效的属性名称”:graph_test。所以我将其注释掉并改用了id,更改了行

    self.graph_test.add_plot(plot)  
    

    收件人:

    self.ids["graph_test"].add_plot(plot)
    

我敢打赌,至少其中一些更改与kivy中的版本差异有关,因此,为清楚起见,我使用的是kivy 1.9.1和python 2.7.13。