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
相关产品推荐
相关产品推荐

