Python Kivy:将文本对齐到标签的左侧
Python Kivy: Align text to the left side of a Label
我阅读了文档,但仍然不知道如何将 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()
根据 the documentation,新创建的标签的大小似乎正好适合文本长度,因此在设置 halign 属性.[=16= 后您可能看不到任何差异]
建议在那里改尺寸属性(如例子所示)
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()
我有点迟到了,但我发现的另一个好技巧是,如果您使用自己的自定义 class 创建标签,您可以在其中定义 class on_size 函数将 text_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的例子:
我阅读了文档,但仍然不知道如何将 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()
根据 the documentation,新创建的标签的大小似乎正好适合文本长度,因此在设置 halign 属性.[=16= 后您可能看不到任何差异]
建议在那里改尺寸属性(如例子所示)
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()
我有点迟到了,但我发现的另一个好技巧是,如果您使用自己的自定义 class 创建标签,您可以在其中定义 class on_size 函数将 text_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的例子: