d0n*_*key 8 python label text-alignment kivy
我阅读了文档,但仍然不知道如何将Kivy-Label内的文本对齐到左侧.文本以默认为中心.A 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()
Run Code Online (Sandbox Code Playgroud)
reb*_*rec 18
根据文档,似乎新创建的标签的大小完全符合文本长度,因此在设置halign属性后您可能看不到任何差异.
建议在那里更改size属性(如示例所示)
text_size = self.size
Run Code Online (Sandbox Code Playgroud)
这将把标签的大小设置为包含它的小部件.然后你应该看到标签正确居中.
正如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()
Run Code Online (Sandbox Code Playgroud)
小智 6
我有点晚了,但我发现的另一个好技巧是,如果您使用自己的自定义类创建标签,您可以在该类中定义 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()
Run Code Online (Sandbox Code Playgroud)
on_size 的示例:
没有 on_size 的示例:
| 归档时间: |
|
| 查看次数: |
13158 次 |
| 最近记录: |