考虑:
我使用 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 文档和一些在线教程中的指导。
我所期待的:
我希望看到一个圆形的文本输入框,我可以在其中输入文本。圆形背景应具有透明或白色填充,并且文本输入应可见且实用。
您可以通过定义基于
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
规则的简化版本,因此可能不支持某些功能。