我试图在Kivy中垂直居中TextInput的文本.但还没有解决方案.
如何在kv文件中输入文本?水平居中也是很好的知道,如何做到这一点.
对于标签,我已经检查了Kivy的文本对齐示例,并且alginment正在工作,因为你可以使用'valign'和'halign'来进行对齐,但是这不适用于TextInputs.
也许使用texture_size的技巧可能有所帮助,但我需要检查它是如何工作的.我已经看到了这样一个标签的技巧,但我不知道它是否适用于TextInput.
这是我现在的kv代码:
#: set Buttonheight1 40
BoxLayout:
size_hint_y: None
height: Buttonheight1
Label:
id: _number_label
text: "Number:"
font_size: 10
size_hint_x: None
width: 50
canvas.after:
Color:
rgba: 1,0,0,.5
Rectangle:
pos: self.pos
size: self.size
TextInput:
multiline: False
size_hint_y: None
height: _number_label.height
#padding_top: 10
font_size: 10
text: str(self.font_size)
#text: '%s, %s' % (self.get_center_x(), self.get_center_y()) #position test
Run Code Online (Sandbox Code Playgroud)
kv代码的说明:
也许它很容易修复,但我对Kivy很新,并没有为此找到一个例子.
这就是目前的样子:

(注意:屏幕截图中的OK按钮不在上面的kv代码中)
Tot*_*tem 10
看看api,我所能建议的是你可以尝试使用填充,因为你可以指定:
Padding of the text: [padding_left, padding_top, padding_right, padding_bottom].
padding also accepts a two argument form [padding_horizontal, padding_vertical] and a one argument form [padding].
Run Code Online (Sandbox Code Playgroud)
也许使用padding_top和/或padding_bottom例如您可以垂直居中文本.
正如 AWolf 的评论中已经建议的那样。这似乎效果最好:
padding: [0, (self.height-self.line_height)/2]
Run Code Online (Sandbox Code Playgroud)