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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:48:03