2015-04-16 17 views
5

Ich mache ein BoxLayout-Widget (orientation = 'horizontal'), das drei Widgets enthält, eine Beschriftung, ein Textfeld und ein Kontrollkästchen.Kivy CheckBox sieht aus wie eine schwarze Box (keine Checkbox)

thisRow = BoxLayout(orientation='horizontal') 
l = Label(text='Enter plate 1:\n(Plate #)') 
t = TextInput(text = 'this is a text box') 
c = CheckBox() 
thisRow.add_widget(l) 
thisRow.add_widget(t) 
thisRow.add_widget(c) 

Dies erzeugt das folgende Widget (thisRow):

enter image description here

Nachdem die Box ...

geprüft

enter image description here

Die rechte Blackbox ist eigentlich die Checkbox und funktioniert funktional, aber es gibt keine Möglichkeit für den Benutzer zu wissen, dass es tatsächlich ein Kontrollkästchen ist. Ich würde ein kleineres leeres Quadrat in der Mitte erwarten, wie in den Bildern dargestellt here.

Wie bekomme ich das traditionelle Checkbox-Bild (kleinere leere quadratische Box)? Oder generell, wie kann ich deutlicher machen, dass die Box ein Kontrollkästchen und nicht nur ein leeres Etikett ist?

Danke

+0

Ich denke, das Problem ist, dass das Kontrollkästchen wird die Größe geändert, um die gesamte Box zu füllen. Was Sie wollen, ist ein weiterer Container, der es dem Kontrollkästchen ermöglicht, seine natürliche Größe beizubehalten und in der Mitte zu schweben. –

Antwort

1

Sieht aus wie die kleineren Kontrollkästchen ausgeblendet, wenn die Hintergrundfarbe ist schwarz. Hier ist ein Beispiel für einen roten Hintergrund.

enter image description here

Es ist nicht ideal, weil ich wie der schwarze Hintergrund zu tun, aber ich kann jetzt mit ihm laufen. Wenn jemand weiß, wie man das mit einem schwarzen Hintergrund macht, wäre das großartig. Danke

3

Das ist wirklich interessante Frage und Malonge versuchte es auf eine gute Art und Weise. Gerade jetzt (1.9.2-dev) gibt es noch feste Größe auf CheckBox ist gut, nenne es einen Hintergrund. Es ist ein Bild, das Widget von Atlas und Änderungen nimmt, wenn der Zustand sich ändert. Daher gab es bis now keinen klaren Weg, wie es geht. Hier ist ein Beispiel. Bald auf Master gibt es CheckBox(color=[r,g,b,a]) Option. Dank;)

from kivy.lang import Builder 
from kivy.base import runTouchApp 
from kivy.uix.boxlayout import BoxLayout 
Builder.load_string(''' 
<CheckBoxBG>: 
    Label: 
    TextInput: 
    CheckBox: 
     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 CheckBoxBG(BoxLayout):pass 
runTouchApp(CheckBoxBG()) 
1

Alternativ zu Ihrem Kontrollkästchen Hintergrund zu ändern, können Sie ein anderes Bild aus dem Atlas verwenden oder Bilder erstellen und sie dann laden:

mycheckbox= CheckBox(
background_checkbox_normal ='tlas://data/images/defaulttheme/button_disabled' 
background_checkbox_down = 'my_checkboxes_checked.png' 
) 

In Kivy 1.9.2. dev0 (und anscheinend seit Version 1.9.0) können Sie das Hintergrundbild von Checkboxen ändern. Standardmäßig verwendet Kivy für diese Hintergründe den Atlas *.

background_checkbox_normal = StringProperty('atlas://data/images/defaulttheme/checkbox_off') #when the checkbox is not active. 
background_checkbox_down = StringProperty('atlas://data/images/defaulttheme/checkbox_on') # when the checkbox is active. 
background_checkbox_disabled_normal = StringProperty('atlas://data/images/defaulttheme/checkbox_disabled_off') #when the checkbox is disabled and not active. 
background_checkbox_disabled_down = StringProperty('atlas://data/images/defaulttheme/checkbox_disabled_on') #when the checkbox is disabled and active. 

Sie können alle Attribute einen Blick here an:

* Der Atlas ist ein Paket von mehreren Texturen, die die Anzahl der Bilder geladen und Speedup das Laden von Anwendungen reduziert. Sie haben eine Vorschau des Atlas in Python Install Folder\Lib\site-packages\kivy\data\images\defaulttheme-0.png