如何在 Kivy 文本输入中水平居中文本? [英] How to center text horizontally in a Kivy text input?

查看:26
本文介绍了如何在 Kivy 文本输入中水平居中文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 Kivy 文本输入中将单行文本居中.我将使用填充

I want to center a single line of text in Kivy text input. I'm going to use padding

widget.padding = [ (self.textinput.width - width of line) / 2, 20, 0, 0]

但我找不到线的宽度.如何计算或访问线的宽度?

but i can't find the width of the line. How can I calculate or access the width of the line?

推荐答案

有一个内部 TextInput._get_text_width 方法可以用来计算正确的填充:

There is an internal TextInput._get_text_width method you can use to calculate proper padding:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder

Builder.load_string('''

<MyWidget>:
    TextInput:
        multiline: False
        on_text: root.update_padding(args[0])
        padding_x: self.width/2 # initial padding
''')

class MyWidget(FloatLayout):
    def update_padding(self, text_input, *args):
        text_width = text_input._get_text_width(
            text_input.text,
            text_input.tab_width,
            text_input._label_cached
        )
        text_input.padding_x = (text_input.width - text_width)/2

class MyApp(App):
    def build(self):        
        return MyWidget()

if __name__ == '__main__':
    MyApp().run()

这篇关于如何在 Kivy 文本输入中水平居中文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆