Python Kivy框架中如何修改Switch开关组件的颜色?
Kivy Switch组件颜色修改方案
Switch组件的渲染逻辑与Button不同,你设置的background_color是从Widget基类继承的通用属性,Switch的默认样式实现没有调用该属性,因此配置后不会生效也不会抛出异常。
你可以通过自定义渲染的方式灵活修改Switch的轨道和滑块颜色,参考修改后的代码如下:
from kivy.app import App from kivy.lang import Builder from kivy.uix.floatlayout import FloatLayout kv = ''' <RedSwitch>: size_hint: None, None size: 200, 200 Switch: id: new_switch pos: 50, 50 size_hint: None, None size: 100, 50 active: False on_active: root.switch_callback() # 清空默认背景纹理 background_active: '' background_inactive: '' # 自定义轨道背景 canvas.before: Color: # 激活时为绿色,未激活为红色 rgba: 0, 1, 0, 1 if self.active else 1, 0, 0, 1 RoundedRectangle: pos: self.pos size: self.size # 圆角和Switch尺寸匹配 radius: [25,] # 自定义滑块颜色为白色 thumb_color: 1, 1, 1, 1 ''' class RedSwitch(FloatLayout): def switch_callback(self): pass class SwitchApp(App): def build(self): Builder.load_string(kv) return RedSwitch() if __name__ == '__main__': SwitchApp().run()
如果仅需要修改滑块颜色,不需要调整轨道的话,直接设置thumb_color属性即可,不需要额外修改canvas内容。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

