如何在kv文件中使用kivy模块garden.graph
?我只找到了解释如何在主python脚本中使用它的文档。
我在python文件中导入了kivy.garden.graph
,我可以在kv文件中添加Graph
,但我没有找到任何文档如何设置大小,图等。
Graph:
id: graph_test
plot: MeshLinePlot
这给出了MeshLinePlot is not defined
以来的错误,尽管我在python端导入了它。
任何帮助都会受到高度赞赏,也许我们可以将这些信息添加到图表的github自述文件中。
答案 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)的回答非常有帮助,但对我来说却不太有效。我对此并不陌生,所以也许这些事情太明显了,无需说明。但是,如果它对我这一级的人有帮助,我必须:
在kv文件中缩进Graph:声明下的属性(以解决kv解析器中的“声明后无效数据”异常。
添加以下内容:
语言:lang-py
from kivy.properties import ObjectProperty
from kivy.app import App
from kivy.uix.widget import Widget
在python文件的顶部。
命名kv文件以匹配应用程序类定义,因此:graphLayout.kv(我将其称为graph.kv,因此它被忽略了-新手错误!)
我为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。