Python Kiy как по нажатию кнопки открывать разметку другого класса

from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image 

class D(BoxLayout):
    pass 
class Container(BoxLayout):
    pass 



class MyApp(App):
    def build(self):
        return Container()

if __name__ == '__main__':
    MyApp().run()

KV файл

<Container>:
    rows:2
    orientation:"vertical"
    BoxLayout:
        size_hint:1,0.2
        Label:
            text:"CHANGE"
            size_hint:1,1
            font_size:60
            color:[1,1,1,1]
            canvas:
                Color:
                    rgba: .5,.35,.87,.5
                Rectangle:
                    pos: self.pos
                    size: self.size

    BoxLayout:
        Button:
            background_color:1,1,19,1
            text:"DOG"
            on_release:
            Image:
                source: 'image.png'
                size: self.texture_size
        Button: 
            background_color:1,1,19,1
            text:'CAT'
<D>:
    Boxlayout:
        Button:
            text:"P"

Как по нажатию на кнопку в классе Container открывать разметку класса D?


Ответы (1 шт):

Автор решения: Karlson21

.py файл

class D(Popup):
    pass 

.kv файл

#:import Factory kivy.factory.Factory

<Container>:
    ....
    ....
    BoxLayout:
        Button:
            background_color:1,1,19,1
            text:"DOG"
            on_release:Factory.D().open()

<D>:
    BoxLayout:
        Button:
            text:"P"

Если я правильно понял, что вам нужно, то попробуйте использовать Popup, тогда можно при нажатии кнопки открыть всплывающее окно, в котором будет BoxLayout.

→ Ссылка