我试图在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
kv代码的说明:
也许修理起来很简单,但我对Kivy来说还是个新手,而且还没有找到一个例子。
目前的情况如下:
(注意:屏幕截图中的“确定”按钮不在上面的kv代码中)
答案 0 :(得分: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].
例如,您可以使用padding_top
和/或padding_bottom
来垂直居中。
答案 1 :(得分:0)
对我有用的是使用pos_hint
,如下所示:
TextInput:
multiline: False
size_hint_y: None
height: _number_label.height
font_size: 10
text: str(self.font_size)
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
答案 2 :(得分:0)
正如阿道夫的评论中所提到的那样。 这似乎效果最好:
padding: [0, (self.height-self.line_height)/2]
答案 3 :(得分:0)