Используя Kivy, я пытаюсь написать простое приложение, которое показывает график и кнопку. У меня есть следующий код, но проблема в том, что я не могу контролировать размер и положение графика в моем файле kv. Таким образом, у меня есть небольшой график в положении Kivy по умолчанию в левом нижнем углу, как показано ниже. Я уверен, что я делаю что-то глупое здесь, но не могу понять, что? Я ценю, если кто-нибудь может помочь с этим.
Вот код:
# Imports
import matplotlib
matplotlib.use('module://kivy.garden.matplotlib.backend_kivy')
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
import matplotlib.pyplot as plt
from kivy.app import App
from kivy.app import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.core.window import Window
class Graph(Widget):
def __init__(self, **kwargs):
super(Graph, self).__init__(**kwargs)
layout = FloatLayout()
plt.plot([1, 2, 3], [1, 2, 3])
figure = plt.gcf()
self.plot = FigureCanvasKivyAgg(figure=figure)
layout.add_widget(self.plot)
self.add_widget(layout)
class Interface(FloatLayout):
pass
class TestApp(App):
def build(self):
Window.clearcolor = (1, 1, 1, 1)
return Interface()
if __name__ in ('__main__'):
TestApp().run()
И следующая настройка kv:
Interface:
<Interface>:
padding: 10
spacing: 10
Button:
text: "Open"
size_hint_x: .15
size_hint_y: .05
pos_hint: {'x': 0.05, 'top': .55}
Graph:
size_hint_x: .5
size_hint_y: .5
pos_hint:{"x":0.5,"y":.5}
Edit:
Изменение Graph на подкласс FloatLayout, как показано ниже:
class Graph(FloatLayout):
def __init__(self, **kwargs):
super(Graph, self).__init__(**kwargs)
layout = FloatLayout()
plt.plot([1, 2, 3], [1, 2, 3])
figure = plt.gcf()
self.plot = FigureCanvasKivyAgg(figure=figure)
layout.add_widget(self.plot)
self.add_widget(layout)
включено изменение размера графика (FloatLayout). Однако положение графика (FloatLayout) не может измениться.