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 ответ:
Согласно документации, похоже, что новая созданная метка имеет размер, который точно соответствует длине текста, поэтому вы можете не видеть никаких различий после установки свойства 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()