У меня очень упрощенный c случай окна с одной кнопкой. При отпускании кнопки я хочу вызвать модальное представление с текстом на нем. При каждом выпуске кнопки я создаю и открываю экземпляр ModalView
, и он работает:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.modalview import ModalView
from kivy.uix.label import Label
class AButton(Button):
def on_release(self, *largs):
view = ModalView(size_hint=(None, None), size=[200, 200])
view.add_widget(Label(text='I am a modal view'))
view.open()
class MyApp(App):
def build(self):
return AButton()
if __name__ == '__main__':
MyApp().run()
Теперь предположим, что я хочу создать подкласс ModalView
, поэтому мне не нужно указывать size_hint
и size
каждый раз, когда я открываю модальное окно. Это код после этого изменения:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.modalview import ModalView
from kivy.uix.label import Label
from kivy.properties import ListProperty
class AButton(Button):
def on_release(self, *largs):
view = ModalView2()
view.add_widget(Label(text='I am a modal view'))
view.open()
class ModalView2(ModalView):
size_hint = ListProperty([None, None])
size = ListProperty([200, 200])
def __init__(self, **kwargs):
super(ModalView2, self).__init__(**kwargs)
class MyApp(App):
def build(self):
return AButton()
if __name__ == '__main__':
MyApp().run()
ModalView
и Label
позиции полностью перепутались. Я пробовал с anchor_x
и anchor_y
в ModalView2
, пытаясь исправить положение метки, но безуспешно. Что я делаю не так?