Виджеты Kivy, используемые в kv
, не должны иметь метода позиционных аргументов __init__()
. FigureCanvasKivyAgg
расширяет Widget
, но имеет обязательный аргумент __init__()
, то есть цифру, поэтому вы не можете использовать его непосредственно в kv
(плохой выбор дизайна, на мой взгляд).
Но вы можете сделать хак, который может работать на вас. Следующее зависит от доступности фигуры до запуска приложения sensor
. Вы можете расширить FigureCanvasKivyAgg
как:
class MyFigure(FigureCanvasKivyAgg):
def __init__(self, **kwargs):
super(MyFigure, self).__init__(plt.gcf(), **kwargs)
Обратите внимание, что MyFigure
не имеет обязательных позиционных аргументов. Но он вызывает FigureCanvasKivyAgg.__init__()
с обязательным аргументом figure. Вот почему фигура уже должна быть доступна.
Затем вы можете использовать MyFigure
в вашем файле kv
как:
<Grafico>:
BoxLayout:
MyFigure:
Button:
size_hint: 0.5, 0.09
pos_hint: {"x": .1 , "y": .2}
text: "Atualizar"
Конечно, метод on_enter()
вашего Grafico
класса должен быть удален.