Я хочу создать пользовательский заголовок окна Kivy. Я очень новичок в kivy, поэтому, пожалуйста, предоставьте некоторые объяснения, как работают события. Мне нужно просто переместить окно, "перемещая" метку.
Прежде всего я хочу знать, почему это вызывает любую функцию, когда я щелкаю или перетаскиваю ярлык. Это в KvLang:
#:import main main.window
CustBoxLayout:
<CustBoxLayout>:
orientation: 'vertical'
Label:
id: header
text: 'MyApp'
font_size: 24
padding_x: 16
color: self.theme_cls.primary_color
on_touch_down: main.click
on_touch_move: main.move
...
Любая функция не вызывается, когда я нажимаю или перетаскиваю ярлык Однако, если я изменю main.click
, например, print('touched!')
, это будет работать.
Итак, я создал свой собственный класс:
class HeadLabel(MaterialLabel):
def on_touch_down(self, touch):
window.click(touch)
def on_touch_move(self, touch):
window.drag(touch)
Это работает. Но сейчас я не знаю, как получить положение экрана из события MotionEvent
. Это мой фактический код окна:
class WindowApp(App):
theme_cls = ThemeManager()
def build(self):
self.theme_cls.theme_style = 'Light'
self.theme_cls.primary_palette = 'Purple'
return CustBoxLayout()
def click(self, touch):
self.touch_x, self.touch_y = touch.spos[0], touch.spos[1]
def drag(self, touch):
Window.top = self.touch_y + touch.spos[0]
Window.left = self.touch_x + touch.spos[1])
Любая помощь будет высоко оценена.