如何在Kivy中进行圆形文本输入?

问题描述 投票:0回答:1

考虑:

我使用 Kivy/KivyMD 创建了一个自定义圆形文本输入框。文本输入框有一个圆形背景,我添加了画布指令来实现这种效果。但是,我面临两个具体问题:

1.无法键入: 当我与圆形文本输入交互时,我无法在其中键入任何文本。它似乎对键盘输入没有反应。

2.文本输入位于圆角矩形后面: 此外,文本输入似乎位于圆角矩形后面。我希望文本输入位于前景,这样我就可以在输入文本的同时仍保留圆形背景。

我的KV代码

  MDFloatLayout:

    orientation: "vertical"

    size: root.width,root.height

    MDCard:

        size_hint: (None,None)

        size: (650,300)

        pos_hint:{"center_x" : 0.5 , "center_y": 0.5}

        MDBoxLayout:

            canvas.before:

                Rectangle:

                    source:"img/gradient.png"

                    size: self.size

                    pos: self.pos

            TextInput:
                hint_text: "text"

                hint_text_color: 0,0,0,1

                foreground_color:0,0,0,1

                background_color: 1,1,1,1

                multiline: False

                size_hint: (None,None)

                width: 500

                height: 30

                pos_hint:{"center_y": 0.90}

                canvas.before:
                    Color:
                        rgba: 1,1,1,1[![enter image description here](https://i.stack.imgur.com/z5bsJ.png)](https://i.stack.imgur.com/z5bsJ.png)

                    RoundedRectangle:
                        size: self.size

                        pos: self.pos

                        radius: 10,

我尝试过的:

我尝试通过添加圆角背景的画布指令来创建带有圆角的自定义 KivyMD 文本输入小部件。我遵循了 Kivy 文档和一些在线教程中的指导。

我所期待的:

我希望看到一个圆形的文本输入框,我可以在其中输入文本。圆形背景应具有透明或白色填充,并且文本输入应可见且实用。

python python-3.x kivy kivy-language kivymd
1个回答
1
投票

您可以通过定义基于

TextInput
的自定义小部件来重新定义用于
TextInput
的画布指令。例如:

<-MyTI@TextInput>:
    canvas.before:
        Color:
            rgba: self.background_color
        RoundedRectangle:
            pos: self.pos
            size: self.size
            radius: [10, 10, 10, 10]
        Color:
            rgba:
                self.disabled_foreground_color if self.disabled else (self.hint_text_color if not self.text else self.foreground_color)

上面定义了一个

MyTI
小部件,它是一个带有圆角的
TextInput
-
意味着应忽略
kv
的现有
TextInput
规则。这是
kv
TextInput
规则的简化版本,因此可能不支持某些功能。

© www.soinside.com 2019 - 2024. All rights reserved.