Можно ли заставить окно приложения Kivy автоматически подгонять размер одной метки внутри? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть простое приложение Kivy, которое отображает сообщение, чтобы уведомить меня о появлении новых комиксов для загрузки. Он работает по этому коду:

def build(self):

Window.size = (300, 300)
self.title = 'Comics Notificator'
self.icon = 'assets/icon.png'
return Label(text=to_display)

Мне было интересно, можно ли было заставить главное окно автоматически соответствовать размеру метки внутри него, а не устанавливать его вручную, так как я не могу точно знать, сколько комиксов будет загружено .

Спасибо!

1 Ответ

0 голосов
/ 02 ноября 2018

Свойство texture_size - это размер текста, поэтому создайте привязку с размером окна, в следующем примере я покажу, как она изменяется при добавлении в текст дополнительных символов.

from kivy.app import App
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.clock import Clock


class TestApp(App):
    def build(self):
        label = Label(text="Stack Overflow", font_size="40dp")
        label.bind(texture_size=Window.setter('size')) # <---
        Clock.schedule_interval(self.on_timeout, 1)
        return label

    def on_timeout(self, dt):
        self.root.text += " :-)" 


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