Чтобы установить многострочный текст в `Label` внутри `MyPopup` в Kivy, вы можете использовать `StringProperty` для передачи текста из класса `Controller` в попап. Давайте интегрируем это в ваш код.
Вот как вы можете это сделать:
1. Создайте свойство `StringProperty` в классе `MyPopup`.
2. Установите это свойство при открытии попапа.
3. Используйте это свойство в `Label` внутри `Popup`.
Вот как будет выглядеть измененный код:
### KV code
```kv
#: import Factory kivy.factory.Factory
<MyPopup@Popup>:
auto_dismiss: False
title: "Мой Попуп"
BoxLayout:
orientation: 'vertical'
padding: 20
Button:
text: 'My status is: ' + self.state
Label:
id: my_custom_label
text: root.popup_text # Используем свойство popup_text из MyPopup
Button:
text: 'Close me!'
on_press: root.dismiss()
<Controller>:
Button:
text: 'Кнопка'
on_release:
my_popup = Factory.MyPopup()
my_popup.popup_text = self.mytext # Передаем текст в popup
my_popup.open()
size_hint: .2, .1
pos_hint: {'x': .5, 'y': .2}
```
### Python code
```python
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import StringProperty
from kivy.lang.builder import Builder
Builder.load_file("Poput_ex.kv")
TXT = """Мы весёлые ребята,
наше имя — октябрята.
Мы не любим лишних слов.
— Будь готов! — Всегда готов.
Друг за другом станем рядом
и одним большим отрядом
скажем сотней голосов:
— Будь готов! — Всегда готов."""
class MyPopup(Popup):
popup_text = StringProperty("") # Создаем StringProperty для текста
class Controller(FloatLayout):
mytext = StringProperty(TXT) # Используем StringProperty для хранения текста
class ControllerApp(App):
def build(self):
return Controller()
if __name__ == '__main__':
ControllerApp().run()
```
### Объяснение изменений:
1. Мы создаем новый класс `MyPopup`, который наследуется от `Popup`, и добавляем свойство `popup_text`, чтобы хранить текст, который будет отображен в `Label`.
2. Мы изменяем кнопку в `Controller`, чтобы при нажатии она создавала экземпляр `MyPopup`, устанавливала свойство `popup_text` на значение `self.mytext` и открывала попап.
3. В `Label` внутри `MyPopup` текст будет отображён через `root.popup_text`, что позволяет динамически заполнять его содержимое.
Теперь, когда вы нажимаете кнопку, откроется попап, и в нем будет отображаться многострочный текст.