Python Kivy框架如何不修改安装文件自定义UI主题图片?
Kivy自定义主题图不修改安装目录的单文件实现方法
核心逻辑为修改Kivy资源搜索优先级,让应用优先读取你本地存放的自定义主题图,无需改动Kivy安装目录文件,也可保持单文件代码结构:
- 将你修改好的
defaulttheme-0.png文件和当前Python脚本放在同一文件夹下 - 在代码开头导入Kivy核心模块前,插入资源路径配置代码,同时清除Kivy默认的图片缓存避免加载旧的全局主题资源
完整可运行代码
import os import sys import serial # 配置Kivy资源搜索路径,优先读取当前脚本目录下的资源 from kivy import resources resources.resource_add_path(os.path.dirname(os.path.abspath(sys.argv[0]))) # 清除主题缓存,强制加载新的自定义主题图 from kivy.graphics import stencil stencil.Clear() from kivy.core.image import ImageLoader ImageLoader.clear_cache() from kivy.app import App from kivy.uix.togglebutton import ToggleButton from kivy.uix.boxlayout import BoxLayout from kivy.core.window import Window Window.size = (400, 100) class R(App): def build(self): def pstate(PBTN,state): # serial communication print("P "+PBTN.state) def lstate(LBTN,state): # serial communication print("L "+LBTN.state) PBTN = ToggleButton(text = 'P', font_size=20, state='down') PBTN.bind(state=pstate) LBTN = ToggleButton(text = 'L', font_size=20, state='down') LBTN.bind(state=lstate) b = BoxLayout(orientation='horizontal') b.add_widget(PBTN) b.add_widget(LBTN) return b if __name__ == "__main__": R().run()
补充说明
该方案完全不影响全局Kivy的配置,其他Kivy应用仍会使用默认主题,如果你后续需要打包为exe分发,只需要把defaulttheme-0.png和生成的exe放在同一目录即可正常生效,不需要额外修改打包配置。
内容的提问来源于stack exchange,提问作者Martynas Žiemys
相关产品推荐
相关产品推荐

