Python Kivy:将文本对齐到Label的左侧

21
我看过文档,但仍不知如何将Kivy-Label中的文本对齐到其左侧。默认情况下,文本是居中对齐的。使用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()
2个回答

37
根据文档,新创建的标签的大小与文本长度完全匹配,因此在设置halign属性后可能看不到任何差异。
建议更改size属性(如示例所示)。
text_size = self.size

这将设置标签的尺寸为包含它的小部件。然后,您应该看到标签正确居中。

正如Tshirtman指出的那样,您还需要将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()

我已经有一个尺寸,比标签内部的文本更宽。 - d0n.key
你可能需要发布你的代码以获得更好的帮助。 - rebrec
2
发布的代码没有显示定义text_size,这正是答案建议的。您想将text_size绑定到size。 - Tshirtman
那很有帮助 :) 谢谢 - d0n.key

5
我对这个话题有些晚了,但我发现另一个不错的技巧是,如果您使用自定义类创建标签,您可以在该类中定义on_size函数来将text_size更改为size。
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label  
          
class MyLabel(Label):
   def on_size(self, *args):
      self.text_size = self.size
    
class Example(App):
           def build(self):
              self.root = FloatLayout()
              self.label = MyLabel(text="I'm aligned :)", size_hint=(1.0, 1.0), halign="left", valign="middle")
              self.root.add_widget(self.label)
              return self.root
    
Example().run()

使用 on_size 的示例:

在此输入图像描述

不使用 on_size 的示例:

不使用 on_size


1
非常好,谢谢。它很干净,不需要kv文件。 - Eric Duminil
@EricDuminil 很高兴你喜欢它! - Jonathan.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接