2013-11-24 28 views
9

Kivy'ye yeni geliyorum ve bir Düğmenin arka plan rengini belirlerken sorun yaşıyorum. İşte benim basit örnek:Kivy'deki Düğmenin arkaplan rengini değiştirme

# custombutton.py 

from kivy.app import App 
from kivy.uix.widget import Widget 


class MyWidget(Widget): 
    pass 


class CustomButtonApp(App): 
    def build(self): 
     return MyWidget() 


if __name__ == '__main__': 
    CustomButtonApp().run() 

Ve beraberindeki kv dosyası custombutton.kv:

#:kivy 1.7.2 

<MyWidget>: 
    canvas: 
     Color: 
      rgb: (0.93, 0.93, 0.93) 
     Rectangle: 
      pos: self.pos 
      size: self.size 

    Button: 
     center: self.parent.center 
     font_size: 14 
     height: 28 
     background_color: (1.0, 0.0, 0.0, 1.0) 
     text: "I'm a Button" 

Ben belirgin bir şey eksik eminim ama şimdi bir saatten fazla bu karıştırmasını oldum ve hiçbir yere gitme. düğme çok koyu kırmızı bir ipucu renkli olsun görünüyor:

enter image description here

bu Kivy bir Düğme arka plan rengini belirtmek için bir yol değil midir?

Teşekkürler!

cevap

13

Ah, bu yaygın bir kafa karışıklığıdır. Sorun, Button.background_color'un gerçekten yalnızca bir blok renk değil, bir çeşit renk tonu olarak çalışmasıdır. Varsayılan arka plan gri bir görüntü olduğundan (normal olmayan bir düğme oluşturduğunuzda normalde gördüğünüzden), sonuçta gördüğünüz o gri görüntünün kırmızı bir tonudur - ki bu da gözlemlediğiniz koyu kırmızıyla ortaya çıkar. Arka plan görüntüsünü düz beyaz olana (birkaç pikselden daha fazla olması gerekmez) veya başka şekilde background_normal ve background_down özellikleriyle çalarak istediğiniz davranışı alabilirsiniz. Background_color'ınız yeni saf beyaz görüntüyü renklendirdiğinde, peşinde olduğunuz saf kırmızıyı elde edersiniz.

Bu, dokümanlarda bu kadar net değil, bunu geliştirmeye çalışacağım sanırım. bu ilk güncellemeleri ile belki yayınlanmıştır beri

+0

sayesinde bu çalışır. Kenarlık rengini belirtmekle ne dersiniz? – Fiver

+0

Sınır nesnelerinin pratikte nasıl çalıştığından emin değilim. Widget tuvalimde doğrudan kendi basit kenarlıklarımı köşe yönergeleri (Çizgi vb.) Ile çizdim. – inclement

+0

"background_normal" ve "background_down" resimlerine sınırlar ekleyebilirsiniz: http://stackoverflow.com/questions/19005182/rounding-button-corners-in-kivy. Görüntüler, [css border-image] (http://css-tricks.com/understanding-border-image/) adresine benzer 9 ızgarada bölünmüştür. Köşelerin eşleştiğinden emin olmalısın. –

2

Onlar daha iyi bir çözüm geldi bir süre oldu: Düğme varsayılan bir gri sahiptir

Button: 
    background_normal: '' 
    background_color: 1, .3, .4, .85 

yana, arka plan rengini ekleyerek sadece düğmeye tonu olacaktır. Varsayılanı beyaza sıfırlayan background_normal değerini '' olarak ayarlayarak. Beyaz tuvalden background_color beklediğiniz gibi çalışır.

Belgeler

1) https://kivy.org/docs/api-kivy.uix.button.html?highlight=button#module-kivy.uix.button

İlgili konular