You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:39:01