2015-06-13 36 views
8

Come utilizzare il modulo kivy garden.graph all'interno del file kv? Ho trovato solo la documentazione che spiegava come usarlo nel principale script python.utilizzando Kivy Garden Graph in linguaggio KV

ho importato il kivy.garden.graph nel file python, e posso aggiungere il Graph all'interno del file kv, ma non ho trovato alcuna documentazione su come impostare le dimensioni, trame ecc

Graph: 
    id: graph_test 
    plot: MeshLinePlot 

questo dà un errore dal MeshLinePlot is not defined, anche se l'ho importato sul lato python.

qualsiasi aiuto sarebbe molto apprezzato, forse potremmo quindi aggiungere queste informazioni anche al file github del grafico.

+0

lingua kv ha #: import statement, lo si trova nella documentazione. Devi importare qualsiasi cosa tu usi nella parte python normalmente, tranne alcune funzioni speciali come la conversione delle metriche per dp, sp ecc. – inclement

risposta

0

Penso che inclemente fosse sulla strada giusta. L'utilizzo di #: import dovrebbe essere in grado di importare il file.

scrittura questo nel file kv:

#:import MeshLinePlot 

si deve essere in grado di importare il modulo, come i kv documentation spettacoli, anche

1

avuto lo stesso problema. Ecco la soluzione:

In generale, secondo la documentazione kivy, nel file di kv:

#:import name x.y.z 

è equivalente a:

from x.y import z as name 

Così si dovrebbe utilizzare il seguente:

#:import MeshLinePlot kivy.garden.graph.MeshLinePlot 

Ho lavorato nel mio caso con la classe Graph ma, ad essere onesti, non sono riuscito ad aggiungere questo grafico al grafico ancora.

1

Costruire sulla risposta da piwnk:

ho aggiunto in .kv file di

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

Nel main.php ho aggiunto

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

Ho cambiato la mia soluzione originale testato per nomi più descrittivi. Spero di non aver commesso errori. Fammi sapere se la soluzione non è completa.