2017-03-19 14 views
0

色を変更するには、キャンバスを自分のチェックボックスに追加します。私はこれを見つけましたanswer、しかし私はそれを実装するのに苦労しています。 私のチェックボックスは、このコードのpythonで作成されます。Kivy:Pythonで作成されたウィジェットにcanvasを使用する方法

checkb= CheckBox() 
layout.add_widget(checkb) 

試み1:私はhereからソリューションを試みたが、成功せず:

checkb= CheckBox() 
checkb.canvas.add(Color(1., 1., 0)) 
checkb.canvas.add(Rectangle(size=(50, 50))) 
layout.add_widget(checkb) 

試み2:私もカスタムを思い付くしようとしましたビルダーで作成されたチェックボックスが動作するようには見当たりませんでした(この種類のセットアップについての情報は見つかりませんでしたので、動作させることさえできません)。

Builder.load_string(''' 
<[email protected]>: 
    canvas.before: 
     Color: 
      rgb: 1,0,0 
     Rectangle: 
      pos:self.center_x-8, self.center_y-8 
      size:[16,16] 
     Color: 
      rgb: 0,0,0 
     Rectangle: 
      pos:self.center_x-7, self.center_y-7 
      size:[14,14]     

''') 

checkb= CustomCk() 
layout.add_widget(checkb) 

編集:文とと私の挑戦:

checkb= CheckBox() 
with checkb.canvas: 
    Color(1, 2, 0) 
    Rectangle(size=(50, 50)) 
layout.add_widget(checkb) 

答えて

1

あなたのPythonコードから声明

with checkb.canvas: 
    Color(1., 1., 0) 
    Rectangle(size=(50, 50)) 

あなたの他にを使用する必要がありますアプローチはより良いようですが、ちょうどそれを修正してください:

Builder.load_string(''' 
<CustomCk>: 
    canvas.before: 
     Color: 
      rgb: 1,0,0 
     Rectangle: 
      pos:self.center_x-8, self.center_y-8 
      size:[16,16] 
     Color: 
      rgb: 0,0,0 
     Rectangle: 
      pos:self.center_x-7, self.center_y-7 
      size:[14,14]     

    ''') 

class CustomCk(CheckBox): #define the class in the python file... 
    pass 

checkb= CustomCk() 
layout.add_widget(checkb) 
+0

私は 'with'文を試しましたが(私の質問では編集を参照)、背景は同じです。どんな考え? – Enora

+1

** kv **の例では、** pos **をCheckBoxの中心にバインドしていますが、** with **の例でも同じことを試してみてください(あなたも* bind *する必要があります) checkbox.center) –