2015-11-17 149 views
3

是否可以完全自定義Kivy滑塊?具體來說,您如何更改滑塊背景顏色,添加滑塊「填充」顏色,並自定義旋鈕圖像/顏色?更改Kivy滑塊顏色

+0

我很確定這與整體主題顏色有關。但是你可以在'kv language'文件中定義顏色。 – Torxed

+0

@Toxxed是的,我最終用'.kv'文件去了,因爲你可以在那裏完全自定義'Slider'。 – ubomb

回答

2

由於Kivy風格定製在線沒有太多,我一直在努力整個星期,所以我決定發佈這個問題/答案在這裏爲其他人。事實證明,你需要基本上重寫Kivy風格類爲Slider s。

使用Kivy's GitHub repo的默認樣式表,我找到了默認樣式Slider類。然後我創建ColorBorderImage孩子的canvas childer根據Slider類,複製現有的孩子開始。請記住Color適用於下一個孩子,因此如果您完全修改了Slider,則需要總共5個孩子在canvas之下。此外,我必須修改BorderImagesize屬性,以便在您移動knob時動態更改。

如果你在添加一個「填充」顏色只是興趣,這裏是我的代碼:

from kivy.lang import Builder 

Builder.load_string(''' 
<Slider>: 
    canvas: 
     Color: 
      rgb: 0, 0, 0 
     BorderImage: 
      border: (0, 18, 0, 18) if self.orientation == 'horizontal' else (18, 
0, 18, 0) 
      pos: (self.x + self.padding, self.center_y - sp(18)) if self.orienta 
tion == 'horizontal' else (self.center_x - 18, self.y + self.padding) 
      size: (max(self.value_pos[0] - self.padding * 2 - sp(16), 0), sp(36) 
) if self.orientation == 'horizontal' else (sp(36), max(self.value_pos[1] - self 
.padding * 2 - sp(16), 0)) 
      source: 'atlas://data/images/defaulttheme/slider{}_background{}'.format(self.orientation[0], '_disabled' if self.disabled else '') 
''') 

當然,你可以很容易地將字符串移動到.kv文件。如果您需要其他兩種自定義的樣本,請告知我們,但它們可以以類似方式完成。