2013-11-24 23 views
9

我是Kivy的新手,無法指定按鈕的背景顏色。這裏是我的簡單的例子:更改Kivy中按鈕的背景顏色

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

和附帶的KV文件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" 

我敢肯定,我失去了一些東西很明顯,但我一直是這樣,現在搞亂了一個多小時並沒有進展。按鈕似乎獲得彩色很暗紅色的提示:

enter image description here

這難道不是指定在Kivy一個按鈕的背景顏色的方式嗎?

謝謝!

回答

13

啊,這是一個普遍的混亂。問題是,Button.background_color確實作爲一種色調,而不僅僅是一種塊顏色。由於默認背景是一個灰色圖像(如果您製作一個無風格的按鈕,通常會看到這個圖像),您最終看到的是該灰色圖像的紅色 - 以您觀察的深紅色出現。

您可以通過將背景圖像替換爲純白色(不必超過幾個像素)或以其他方式使用background_normalbackground_down屬性進行播放來獲得所需的行爲。當你的background_color爲新的純白色圖像着色時,你會得到純粹的紅色。

我想這不是很清楚的文檔,我會盡力改善它。

+0

謝謝,這個作品。指定邊框顏色怎麼樣? – Fiver

+0

我不太清楚邊界的實際工作情況。我只是直接在我的窗口小部件畫布上繪製了我自己的簡單邊框和頂點指令(線等)。 – inclement

+0

您可以將邊框添加到'background_normal'和'background_down'圖像:http://stackoverflow.com/questions/19005182/rounding-button-corners-in-kivy。圖像被分成9個網格,類似於[css border-image](http://css-tricks.com/understanding-border-image/)。你必須確保角落匹配。 –

2

這已經有一段時間,因爲這是第一次公佈,所以也許有更新,他們想出了一個更好的解決方案:

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

因爲按鈕有一個默認的灰色,添加背景顏色將僅着色按鈕。通過將background_normal設置爲''將默認值重置爲白色。 background_color在白色畫布上按照您的預期工作。

文檔

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