如何在kv文件中的文本输入中垂直居中文本?

时间:2014-05-01 09:14:28

标签: python kivy

我试图在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代码的说明:

  • Buttonheight1是kv set
  • 的常量
  • Canvas.after仅用于调试标签的大小
  • 文本输入的文本显示字体大小为虚拟文本

也许修理起来很简单,但我对Kivy来说还是个新手,而且还没有找到一个例子。

目前的情况如下:

Screenshot TextInput

(注意:屏幕截图中的“确定”按钮不在上面的kv代码中)

4 个答案:

答案 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)

我知道这是旧帖子..如果有人再次搜索这个,我只想给出答案。 解决办法如下:

在 kivy 文件的 TextInput 属性中添加这一行

padding : 6,self.height/2 - self.font_size/2,6,6

我在自定义文本输入中使用了此代码。

如您所见,它运行良好: enter image description here