2016-06-16 12 views
0

TextInputを作成し、そのキャンバスを背景に白のRoundedRectangleに変更したいとします。私はbackground_colorを透明にしましたが、TextInputの背後にはその矩形が表示されません。
代わりにcanvas.beforecanvas.afterに描画しようとしました。両者とも1つの結果をもたらしたように見えました。予想されるRectangleがカーソルとテキストをカバーしました。これがcanvas.afterの後に期待される間、私はcanvas.beforeが何もカバーしないだろうと思った? TextInputのキャンバスの指示で背景を作成するにはどうすればよいですか?ここでKivyでキャンバス命令が表示されない

はコードです:

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

シンプル!キャンバスにColorを設定します。これは、(いくつかの)他のコンポーネントにも(おそらくOpenGLを介して)設定されています。あなたがroot.でそれらにアクセスすることができますので、あなたはすでに、デフォルトのTextInputに設定された色を持っている

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()) 

: - したがって、あなたはそれを「解除」を持っているか、より良いあなたがすでにアクセスしたデフォルトColor、それを設定しました

また、その他の機能についてはbackground_*のプロパティで再生します。 の画像をにすると、モビールが必要な場合はパフォーマンスが向上し、TextInputは自動的にスイッチを処理するため、これらのプロパティを設定するだけで切り替えることができます。

関連する問題