如何在 Kivy 的 TextInput 中水平居中文本?
这是我的 kv 语言的一部分:
BoxLayout:
orientation: 'vertical'
Label:
markup: True
text: '[b] Type something... [/b]'
size_hint: 1, 0.6
size: self.parent.size[0], 200
font_size: self.size[0] * 0.1
text_size: self.size
halign: 'center'
valign: 'middle'
canvas.before:
Color:
rgb: 0, 0, 204
Rectangle:
pos: self.pos
size: self.size
TextInput:
focus: True
如何将 TextInput 的文本居中?
原文由 Carlos Porta 发布,翻译遵循 CC BY-SA 4.0 许可协议
Afaik,没有以与
Label
相同的方式对齐,但是,您可以使用padding
将位置推到任何你想要的位置。请记住,更改文本大小会影响居中,因此您需要重新计算大小的更改(例如,在使用多个设备、大小等时)。或者甚至可以有一个解决方法,您可以使
TextInput
不可见,使用Label
获取触摸事件以触发TextInput
并更改(这将打开键盘)Label
的文本更改TextInput
的文本属性。您将失去以这种方式使用光标的可能性,并且您将需要处理环绕文本。例子:
self._get_text_width(...)
显然是一个TextInput
的方法。它与小部件的核心一起工作,所以它可能不稳定(我发布的第一个例子是错误的,因为我的错误)^^现在如果
padding_x
的值从left
和right
,你只需要在左侧使用和减法正确的地方),所以让我们这样做:TextInput
中最长的子串center[0]
坐标当我们已经使 X 轴居中时,让我们转到 Y 轴。
padding_y
的值是top
和bottom
height
TextInput
中的行数self.height / 2.0
减去数字0
,我们不关心它注意:
max()
需要一些参数,如果没有text
,max()
将提高声音。我们将使用替代的左填充来关闭它padding_x
仅使用中心: