Я новичок в Python и Kivy, и я пытаюсь написать сценарий для приложения, которое может создавать анимированный сюжет из файла csv. При отдельном запуске скрипта проблем не возникает, но при включении его в класс Chart я обнаруживаю:
AttributeError: 'FigureCanvasAgg' object has no attribute 'manager'
Figure.show works only for figures managed by pyplot, normally created by pyplot.figure().
Проблема, похоже, связана с plt.show () но я не совсем уверен.
Я использую Python 3.7
.py
class LoginScreen(Screen):
pass
class DataScreen(Screen):
pass
class Chart(BoxLayout):
plt.style.use('fivethirtyeight')
x_vals = []
y_vals = []
index = count()
def animate(i):
data = pd.read_csv('data.csv')
x = data['x_value']
y1 = data['total_1']
y2 = data['total_2']
plt.cla()
plt.plot(x, y1, label='Temperature')
plt.plot(x, y2, label='Blood Pressure')
plt.legend(loc='lower left')
plt.xticks(rotation=45)
plt.tight_layout()
ani = FuncAnimation(plt.gcf(), animate, interval=25)
plt.tight_layout()
plt.show()
while True:
data = pd.read_csv('data.csv')
x = data['x_value']
y1 = data['total_1']
y2 = data['total_2']
df = pd.DataFrame({'Time': [x], 'Temperature': [y1], 'Blood Pressure': [y2]})
time.sleep
GUI = Builder.load_file("main.kv")
class MainApp(App):
def build(self):
return GUI
def change_screen(self, screen_name):
screen_manager = self.root.ids['screen_manager']
screen_manager.current = screen_name
MainApp().run()
.kv
#:import MeshLinePlot kivy.garden.graph.MeshLinePlot
<DataScreen>
BoxLayout:
orientation: 'vertical'
spacing:10
Chart:
Button:
text: "Back"
on_release:
app.change_screen("login_screen")
root.manager.trans