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

使用PyInstaller打包Kivy应用生成Windows exe后出现黑屏问题求助

问题原因

  • 你配置的.spec文件中datas字段为空,PyInstaller不会自动打包Kivy的kv布局文件,导致exe运行时找不到布局配置,仅渲染空窗口(你所说的黑屏)。
  • Kivy默认通过App类名自动匹配kv文件的规则在打包后的运行环境中容易出现路径读取失败的问题,进一步加剧布局加载失败。

修复步骤

步骤1:修改.spec配置文件

把datas = []替换为以下内容,告诉PyInstaller要把kv文件打包到运行目录:

datas=[('democlass.kv', '.')],

如果后续还有其他静态资源(比如图片、字体等),也按照(源文件路径, 打包后存放路径)的格式添加到datas列表即可。

如果修改后还是无法显示组件,可以在hiddenimports字段补充Kivy组件的导入声明:

hiddenimports=['kivy.uix.gridlayout', 'kivy.uix.label', 'kivy.uix.textinput', 'kivy.uix.button'],

步骤2(可选,更稳定):手动加载kv文件

在你的.py代码开头手动加载kv文件,避免自动匹配的路径问题,修改后的代码如下:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty

# 手动加载kv文件
Builder.load_file('democlass.kv')

class Demo(GridLayout):
    name = ObjectProperty(None)
    age = ObjectProperty(None)

    def on_click(self):
        print("My name is {} and my age is {}".format(self.name.text, self.age.text))
        self.name.text = ""
        self.age.text = ""

class DemoClassApp(App):
    def build(self):
        return Demo()

if __name__ == "__main__":
    DemoClassApp().run()

步骤3:重新打包

修改完配置后,用修改后的.spec文件重新执行打包命令:
pyinstaller app1.spec
打包完成后进入dist/app1目录运行exe即可正常显示组件。

验证小技巧

你可以先不修改spec,直接把democlass.kv复制到打包生成的exe所在目录,运行exe如果能正常显示,就能100%确认是kv文件未被打包的问题。

内容的提问来源于stack exchange,提问作者deepan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:48:00