Я хочу закрыть кнопку красным прямоугольником в Киви. Эта кнопка стоит в BoxLayout
. Я определил класс MyButton
, который показывает aws прямоугольник над кнопкой, и это работает. Однако, если я исправлю ширину BoxLayout
, в которой находится кнопка, прямоугольник перейдет в нижний левый угол.
MWE:
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.graphics import Color, Rectangle
Builder.load_string('''
<MainApp>:
orientation: 'horizontal'
BoxLayout:
orientation: 'vertical'
# width: 100 # uncommenting these two lines breaks the rectangle positioning
# size_hint: (None,1)
MyButton:
text: 'button1'
size_hint: (1,None)
height: 50
Label:
Label:
''')
class MyButton(Button):
def __init__(self, **kwargs):
super(MyButton, self).__init__(**kwargs)
def on_size(self, *args):
self.canvas.after.clear()
with self.canvas.after:
Color(1, 0, 0, 1)
Rectangle(pos=self.pos, size=self.size)
class MainApp(BoxLayout):
pass
class TestApp(App):
def build(self):
return MainApp()
if __name__ == '__main__':
TestApp().run()
Раскомментирование двух закомментированных строк в Builder.load_string
ломает позиционирование прямоугольника. Чего мне не хватает?