2015-06-13 20 views
8

Jak korzystać z modułu kivy garden.graph w pliku kv? Znalazłem tylko dokumentację, która wyjaśniła, jak go używać w głównym skrypcie pythona.przy użyciu Kivy Garden Graph w języku KV

I przywoził kivy.garden.graph w pliku Pythona, i mogę dodać Graph wewnątrz pliku kV, ale nie mogę znaleźć żadnej dokumentacji, jak ustawić rozmiar, działki itp

Graph: 
    id: graph_test 
    plot: MeshLinePlot 

to daje błąd od MeshLinePlot is not defined, chociaż zaimportowałem go po stronie Pythona.

każda pomoc byłaby bardzo cenna, może moglibyśmy następnie dodać tę informację do pliku github readmenu na wykresie.

+0

Język kv ma instrukcję #: import, którą można znaleźć w dokumentacji. Musisz zaimportować wszystko, czego używasz w części Pythona, jak zwykle, z wyjątkiem kilku specjalnych funkcji, takich jak konwersja metryk dla dp, sp itp. – inclement

Odpowiedz

0

Myślę, że inclement był na dobrej drodze. Użycie #: import powinno umożliwić import pliku.

napisać to w pliku kv:

#:import MeshLinePlot 

powinien on być w stanie importować moduł, jak kv documentation wystawach, również

1

miał ten sam problem. Oto rozwiązanie:

Generalnie, zgodnie z dokumentacją kivy w pliku kv:

#:import name x.y.z 

odpowiada:

from x.y import z as name 

Więc należy użyć następujących:

#:import MeshLinePlot kivy.garden.graph.MeshLinePlot 

Pracowałem w moim przypadku z klasą Graph, ale, szczerze mówiąc, nie udało mi się dodać tego wykresu do wykresu jeszcze.

1

Opierając się na odpowiedź od piwnk:

dodałem w .kv pliku

#: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 

W main.php dodałem

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() 

ja zmieniłem oryginalne przetestowane rozwiązanie bardziej opisowe nazwy. Mam nadzieję, że nie popełniłem żadnych błędów. Daj mi znać, jeśli rozwiązanie nie jest kompletne.