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

2024-10-03 23:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Kivy中垂直居中文本输入。 但还没有解决办法。在

如何对kv文件中的文本输入进行验证?水平居中也很好,知道怎么做。在

对于标签,我已经检查了Kivy的文本对齐示例,那里的alginment是有效的,因为在那里你可以使用'valign'和'halign'来进行对齐,但是文本输入不可用。在

也许一个与纹理大小有关的技巧可能会有帮助,但我需要检查这是如何工作的。我见过这样的标签技巧,但我不知道它是否适用于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规范说明:

  • 按钮设置为1 kv
  • 在画布后只是为了调试标签的大小
  • 文本输入的文本将字体大小显示为伪文本

也许这很容易修复,但我对Kivy还是个新手,还没有找到一个例子。在

以下是目前的情况:

Screenshot TextInput

(注:截图中的OK按钮不在上面的kv代码中)


Tags: 代码text文本selfnone技巧size标签
3条回答

正如AWolf在评论中所建议的那样。 这似乎最有效:

padding: [0, (self.height-self.line_height)/2]

看一下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将文本垂直居中。在

对我有效的方法是使用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}

相关问题 更多 >