[英]using Kivy Garden Graph in KV language
如何在kv文件中使用kivy模塊garden.graph
? 我只找到了解釋如何在主python腳本中使用它的文檔。
我在python文件中導入了kivy.garden.graph
,我可以在kv文件中添加Graph
,但是我沒有找到任何文檔如何設置大小,圖等。
Graph:
id: graph_test
plot: MeshLinePlot
由於我MeshLinePlot is not defined
,所以這會產生錯誤,盡管我在python端導入它。
任何幫助都將受到高度贊賞,也許我們可以將此信息添加到圖形的github自述文件中。
基於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.py中,我補充說:
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()
我已將原始測試解決方案更改為更具描述性的名稱。 希望我沒有犯任何錯誤。 如果解決方案不完整,請告訴我。
有同樣的問題。 這是解決方案:
一般來說,根據kivy文檔,在kv文件中:
#:import name x.y.z
相當於:
from x.y import z as name
所以你應該使用以下內容:
#:import MeshLinePlot kivy.garden.graph.MeshLinePlot
在我的情況下使用Graph類,但說實話,我還沒有設法將這個圖添加到圖表中。
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文件命名為與app類定義匹配,所以: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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.