Я хотел бы добавить несколько графиков на график. В следующем примере добавляются только данные, рассчитанные в последней строке цикла. Как мне достичь своей цели?
Примечания: я могу сделать это нормально, используя примеры kivy, в которых не используется файл .kv, а виджет графика добавляется после выполнения нескольких команд graph.add_plot в цикле. Я также понял, что при использовании файла .kv виджеты автоматически обновляются, а при запуске из кода Python - нет.
from kivy.garden.graph import MeshLinePlot
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from math import sin
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super(RootWidget, self).__init__()
self.plot = MeshLinePlot(color=[.5, .5, 1, 1])
def start(self):
#self.ids.graph.add_plot(self.plot) #same result if this line is added here
for i in range(24):
data_to_graph = [(x, sin(x)+ i) for x in range(0, 101)] #apply a DC offset to each trace to display multiple traces
print(data_to_graph)
self.plot.points = data_to_graph
self.ids.graph.add_plot(self.plot)
class GraphDemo(App):
def build(self):
return Builder.load_file("mainWindow_play.kv")
if __name__ == "__main__":
GraphDemo().run()
mainWindow_play.kv
#:import MeshLinePlot kivy.garden.graph.MeshLinePlot
RootWidget:
BoxLayout:
orientation: "vertical"
BoxLayout:
size_hint: [1, .8]
Graph:
id: graph
xlabel: "X"
ylabel: "Y"
y_ticks_major: 4
x_ticks_major: 4
y_grid_label: True
x_grid_label: True
padding: 5
x_grid: True
y_grid: True
ymin: -1
ymax: 25
xmin: 0
xmax: 25
BoxLayout:
size_hint: [1, .2]
orientation: "horizontal"
Button:
text: "START"
bold: True
on_press: root.start()