我想创建一个TextInput
并修改其画布,使其背景为白色RoundedRectangle
。我让background_color
透明了,但我在TextInput
后面看不到那个矩形。
我试图改用canvas.before
和canvas.after
。两者似乎都导致了一件事:预期的Rectangle
覆盖了光标和文本。虽然这可以用于canvas.after,我认为canvas.before
不会涵盖任何东西?如何通过画布说明为TextInput
制作背景?
以下是代码:
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.textinput import TextInput
Builder.load_string('''
<Test>:
canvas: # no rectangle this way
Color:
rgba: 1, 1, 1, 1
RoundedRectangle:
pos: self.pos
size: self.size
background_color: 1, 1, 1, 0
''')
class Test(TextInput):
pass
runTouchApp(Test())
答案 0 :(得分:0)
简单!你在canvas中设置了Color
,它被设置为(某些?)其他组件(可能直接通过OpenGL)。因此,您必须“取消设置”它 - 或者更好地说将其设置为您已访问的默认Color
:
from kivy.lang import Builder
from kivy.base import runTouchApp
from kivy.uix.textinput import TextInput
Builder.load_string('''
<Test>:
canvas.before:
Color:
rgba: 1, 0, 0, .5
Rectangle:
pos: self.pos
size: self.size
Color:
rgba: root.foreground_color
background_color: 1,1,1,0
''')
class Test(TextInput): pass
runTouchApp(Test())
您已在默认TextInput中设置了颜色,因此您可以使用root.
还有更多功能可以使用background_*
属性。如果需要(手机),制作带圆角的图像可能会更好地提高性能,只需设置这些属性就可以在它们之间切换,因为TextInput
会自动处理切换。 / p>