3
是否可以完全自定義Kivy
滑塊?具體來說,您如何更改滑塊背景顏色,添加滑塊「填充」顏色,並自定義旋鈕圖像/顏色?更改Kivy滑塊顏色
是否可以完全自定義Kivy
滑塊?具體來說,您如何更改滑塊背景顏色,添加滑塊「填充」顏色,並自定義旋鈕圖像/顏色?更改Kivy滑塊顏色
由於Kivy
風格定製在線沒有太多,我一直在努力整個星期,所以我決定發佈這個問題/答案在這裏爲其他人。事實證明,你需要基本上重寫Kivy
風格類爲Slider
s。
使用Kivy
's GitHub repo的默認樣式表,我找到了默認樣式Slider
類。然後我創建Color
和BorderImage
孩子的canvas
childer根據Slider
類,複製現有的孩子開始。請記住Color
適用於下一個孩子,因此如果您完全修改了Slider
,則需要總共5個孩子在canvas
之下。此外,我必須修改BorderImage
的size
屬性,以便在您移動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
文件。如果您需要其他兩種自定義的樣本,請告知我們,但它們可以以類似方式完成。
我很確定這與整體主題顏色有關。但是你可以在'kv language'文件中定義顏色。 – Torxed
@Toxxed是的,我最終用'.kv'文件去了,因爲你可以在那裏完全自定義'Slider'。 – ubomb