AttributeError: объект 'FigureCanvasAgg' не имеет атрибута 'manager' - PullRequest
0 голосов
/ 02 августа 2020

Я новичок в 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
...