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

Kivy编译为exe后config.ini设置不生效,窗口仍可调整求助

解决Kivy打包成exe后窗口可调整大小的问题

你的问题根源在于:Kivy启动时会优先加载用户目录下自动生成的.kivy/config.ini配置,而你代码里用的Config.setdefault()只会在配置项不存在时才生效——如果用户目录已经有resizable=1的配置,这个方法不会覆盖它,导致打包后的exe窗口仍可调整。

下面是几个永久解决的方案:

方案1:强制覆盖配置(最简单有效)

把代码里的setdefault替换成set,这个方法不管配置项是否存在,都会强制设置你指定的值,彻底覆盖默认配置:

from kivy.config import Config
import os

_local_dir = os.path.dirname(os.path.abspath(__file__))
Config.read(_local_dir + '/config.ini')
# 用set替代setdefault,强制设置配置
Config.set('input', 'mouse', 'mouse,multitouch_on_demand')
Config.set('graphics', 'resizable', '0')
Config.set('graphics', 'show_taskbar_icon', '0')

# 关键:这段代码必须放在App类实例化之前执行
# 可选:如果需要把修改写入配置文件,避免下次启动被默认值覆盖
Config.write()

方案2:打包时嵌入自定义配置文件

把你的本地config.ini打包进exe,让Kivy优先加载这个打包后的配置,而不是用户目录的默认配置:

  1. 确保本地config.ini里已经正确设置:
[graphics]
resizable = 0
show_taskbar_icon = 0

[input]
mouse = mouse,multitouch_on_demand
  1. 修改代码,让程序在打包后能找到嵌入的配置文件:
from kivy.config import Config
import os
import sys

# 获取打包后的资源路径(PyInstaller会把资源放在_MEIPASS目录)
if hasattr(sys, '_MEIPASS'):
    _local_dir = sys._MEIPASS
else:
    _local_dir = os.path.dirname(os.path.abspath(__file__))

# 优先加载打包的配置文件
Config.read(os.path.join(_local_dir, 'config.ini'))
# 保险起见,再强制设置关键项
Config.set('graphics', 'resizable', '0')
  1. 用PyInstaller打包时,在spec文件里添加资源引用:
a = Analysis(
    # 你的其他配置...
)
# 把config.ini添加到打包资源中
a.datas += [('config.ini', 'path/to/your/local/config.ini', 'DATA')]
pyz = PYZ(a.pure, a.zipped_data)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          # 你的其他打包配置...
          )

方案3:禁止Kivy生成用户目录配置(彻底自定义)

如果不需要Kivy在用户目录生成任何配置文件,可以在代码最开头设置环境变量,让Kivy完全使用你代码里的配置:

import os
# 禁止Kivy加载和生成用户目录的配置文件
os.environ['KIVY_NO_CONFIG'] = '1'

from kivy.config import Config
Config.set('input', 'mouse', 'mouse,multitouch_on_demand')
Config.set('graphics', 'resizable', '0')
Config.set('graphics', 'show_taskbar_icon', '0')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:08:14