Kivy (Python) Проблемы с форматированием
У меня проблемы с форматированием этих эллипсов, чтобы они появлялись в центре экрана. Я перепробовал все, что мог придумать. Кнопка, которую я написал на языке Kivy, идет в угол монитора, как и предполагалось, но все в классе Target отказывается подчиняться моему форматированию и рисуется в левом нижнем углу экрана, несмотря ни на что.
class Target(Label):
def __init__(self, **kwargs):
super(Target, self).__init__(**kwargs)
with self.canvas:
Color(1,1,1)
d = 400
Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))
Color(0,0,0)
d = 320
Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))
Color(0,0,1)
d = 240
Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))
Color(1,0,0)
d = 160
Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))
Color(1,1,0)
d = 80
Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))
Вот и весь необработанный код Python, относящийся к рисованию кругов на виджете. Вот код Kivy, который имеет дело с экраном.
<ScoringLayout>:
FloatLayout:
Target:
center: self.parent.center
size_hint: 0.2, 0.3
Button:
text: "Return"
on_release: app.root.current = "main"
font_size: 15
size_hint: 0.3 ,0.2
pos_hint: {"right": 1, "bottom": 1}
Scoring Layout - это макет экрана, который переключается на кнопку, расположенную под неработающим кодом, которая ссылается на главный экран приложения.
Я должен также сказать, что цель состоит в том, чтобы это было упаковано как приложение для Android вместе с остальной частью моего кода.
1 ответ
Эллипсы рисуются согласно self.center_x в тот момент, когда __init__
выполняется, в этот момент он по-прежнему по умолчанию (50, 50).
Вы можете исправить это, используя язык kv, или вручную создав привязку к функции, которая обновляет положение и размер эллипса при изменении положения или размера виджета.