KivyMD应用窗口左上角无法显示自定义应用图标问题求助
KivyMD自定义窗口图标不显示解决方案
导致你原代码无法正常显示自定义图标的核心原因有3个:
- 图标设置时机错误:你在
build()方法内才给self.icon赋值,此时Kivy窗口已经完成初始化加载了默认图标,后续赋值不会生效 - 缺少全局窗口图标配置:没有提前通过Kivy的Config设置全局窗口图标参数,仅设置App的icon属性在部分桌面系统下不会触发窗口图标更新
- 图标格式兼容性问题:PNG格式作为窗口图标在Windows等系统下兼容性差,容易出现加载异常、显示错误的问题
1. 格式转换
先将你的stonkss.png转换为多尺寸ICO格式(建议包含1616、3232、48*48三种常用窗口图标尺寸),保存为stonkss.ico放在和主程序.py同级目录下。
2. 调整代码配置顺序和属性位置
Kivy的全局Config配置必须在导入kivy/kivymd核心模块之前执行,同时将icon属性直接设置为App类的类属性,不要放到build方法内。
修改后的代码示例:
# 最开头优先配置Kivy全局参数,必须放在kivymd相关导入之前 from kivy.config import Config import os cur_file_path = os.path.dirname(os.path.abspath(__file__)).replace('\\','/') # 配置全局窗口图标 Config.set('kivy', 'window_icon', f'{cur_file_path}/stonkss.ico') # 后面再导入其他依赖 from kivymd.app import MDApp from kivy.lang import Builder # 你原来的其他全局变量,比如theme等 theme = "Light" # 此处替换为你原来的theme变量定义 class StonkkApp(MDApp): # 直接作为类属性设置图标,无需放到build方法内 icon = f'{cur_file_path}/stonkss.ico' def build(self): screen = Builder.load_file('layout.kv') self.theme_cls.theme_style = theme self.theme_cls.primary_palette = 'Gray' return screen def restart(self): self.root.clear_widgets() self.stop() return StonkkApp().run() if __name__ == "__main__": StonkkApp().run()
3. 异常排查
如果修改后还是无法正常显示,可以先打印f'{cur_file_path}/stonkss.ico'的路径,确认文件路径正确、ICO文件可正常读取。
内容的提问来源于stack exchange,提问作者I3lackI3uck
相关产品推荐
相关产品推荐

