Отображение графика с использованием KIVY как части макета блока - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в использовании Kivy.Что я хочу сделать, это вставить график как часть макета блока.Я получаю следующее сообщение об ошибке: AttributeError: у объекта 'kivy.properties.DictProperty' нет атрибута 'destination'

Я уверен, что решение простое, но, похоже, я не могу туда добраться.Любая помощь будет отличной.

Код Python:

import kivy
kivy.require('1.9.0')

from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
import matplotlib.pyplot as plt


plt.plot([1, 23, 2, 4])
plt.ylabel('some numbers')

class BoxLayoutApp(App):

    def build(self):
        box = BoxLayout()
        BoxLayout.ids.destination.add_widget(FigureCanvasKivyAgg(plt.gcf()))
        return box

blApp = BoxLayoutApp()
blApp.run()

Код Kivy =============================================================================

<BoxLayout>:
    orientation: "vertical"
    spacing: 10
    padding: 10
    canvas.before:
        Rectangle:
            id: destination
            pos: self.pos
            size: self.size
    Button:
        text: "2nd"     
    Button:
        text: "3rd"

1 Ответ

0 голосов
/ 23 октября 2018

На самом деле, я не думаю, что словарь ids - это ваша проблема.Похоже, вы пытаетесь добавить FigureCanvasKivyAgg к инструкции Rectangle canvas.Вы должны просто добавить его к вашему BoxLayout, как показано ниже:

import kivy
from kivy.lang import Builder

kivy.require('1.9.0')

from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
import matplotlib.pyplot as plt

Builder.load_string('''
<BoxLayout>:
    orientation: "vertical"
    spacing: 10
    padding: 10
    Button:
        text: "2nd"     
    Button:
        text: "3rd"
''')

plt.plot([1, 23, 2, 4])
plt.ylabel('some numbers')

class BoxLayoutApp(App):

    def build(self):
        box = BoxLayout()
        box.add_widget(FigureCanvasKivyAgg(plt.gcf()))
        return box

blApp = BoxLayoutApp()
blApp.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...