Python Kivy: выравнивание текста по левой стороне метки


Я читаю документы и до сих пор не знаю, как выровнять текст внутри Kivy-метки с левой стороны. Текст центрируется по умолчанию. А halign = "left" не помогло. Извините, если решение очевидно, но я просто не нахожу его.

Править: Пример кода:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label

class Example(App):
     def build(self):
          self.root = FloatLayout()
          self.label = Label(text="I'm centered :(", pos=(0,0), size_hint=(1.0,1.0), halign="left")
          self.label.text_size = self.label.size #no horizontal change
          self.root.add_widget(self.label)
          return self.root

Example().run()
1 4

1 ответ:

Согласно документации, похоже, что новая созданная метка имеет размер, который точно соответствует длине текста, поэтому вы можете не видеть никаких различий после установки свойства halign.

Там рекомендуется изменить свойство size (как показано в примере)

text_size = self.size

, который установит размер метки для виджета, содержащего ее. Затем вы должны увидеть, что метка правильно центрирована.

Как указал Тширтман , у вас также есть привязать свойство text_size к свойству size. Полный рабочий пример:

#!/usr/bin/kivy
# -*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label

class Example(App):
    def build(self):
        self.root = FloatLayout()
        self.label = Label(text="I'm aligned :)", size_hint=(1.0, 1.0), halign="left", valign="middle")
        self.label.bind(size=self.label.setter('text_size'))    
        self.root.add_widget(self.label)
        return self.root

Example().run()