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

Python Tkinter密码管理器GUI直接运行.py文件闪退求助

问题原因及解决方法

问题核心原因

双击.py文件运行时,Windows会将当前用户的默认工作目录(比如桌面、文档文件夹)设为程序的工作路径,而非脚本文件所在的目录。此时程序尝试加载logo.png时,会在默认工作目录中查找,找不到就抛出FileNotFoundError,但代码没有异常处理逻辑,导致程序直接崩溃闪退。而IDE和命令行运行时,工作目录默认就是脚本所在文件夹,所以能正常定位到图片文件。

解决方法

1. 使用绝对路径加载图片(推荐)

通过Python的os模块获取脚本的绝对路径,再拼接图片文件名,确保无论从哪里运行都能精准定位到图片:

import os
from tkinter import PhotoImage

# 获取脚本所在的绝对目录
script_path = os.path.abspath(__file__)
script_dir = os.path.dirname(script_path)
# 拼接图片的绝对路径
logo_path = os.path.join(script_dir, "logo.png")
# 加载图片
logo_image = PhotoImage(file=logo_path)

2. 添加异常捕获避免闪退

如果不想修改路径逻辑,可以给图片加载代码加上异常捕获,即使找不到图片,程序也不会直接崩溃,还能给出明确错误提示:

from tkinter import PhotoImage

try:
    logo_image = PhotoImage(file='logo.png')
except FileNotFoundError:
    print("错误:未找到logo.png文件,请确保图片与脚本在同一文件夹内!")
    # 可添加降级处理,比如使用默认图标或跳过图片加载
    # 若要让双击运行时窗口停留,可加下面一行
    input("按回车键退出...")

3. 强制切换工作目录到脚本所在路径

在程序开头添加代码,将工作目录切换到脚本所在的文件夹,之后再正常加载图片即可:

import os

# 切换工作目录到脚本所在文件夹
os.chdir(os.path.dirname(os.path.abspath(__file__)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:07