如何修复Python Tkinter重启按钮报错[Errno 2]文件不存在
解决Tkinter重启按钮的[Errno 2]路径错误问题
错误原因
你的Python可执行文件路径包含空格(例如路径中的ROG FLOW、Untuk SIDANG TA等目录名),os.execl在Windows环境下处理带空格的路径时,会被系统解析为多个参数,导致无法正确定位到python.exe,从而触发"找不到文件或目录"的错误。
解决方案
替换原有的os.execl调用,改用subprocess.Popen来启动新进程,它能正确处理带空格的路径。修改后的代码如下:
import sys import subprocess from tkinter import Tk, Label, Button def restart_me(): # 启动新的Python进程,传递当前程序的参数 subprocess.Popen([sys.executable] + sys.argv) # 退出当前进程 sys.exit() root = Tk() Label(root, text="hi there!").pack() Label(root, text="hi there!").pack() Button(root, text="Restart", command=restart_me).pack() root.mainloop()
额外说明
如果坚持使用os.execl,可以给路径加上双引号包裹(仅适用于Windows环境),代码如下:
def restart_me(): pth = sys.executable # 用双引号包裹带空格的路径 os.execl(f'"{pth}"', f'"{pth}"', *sys.argv)
但这种方式跨平台兼容性较差,更推荐使用subprocess的方案。
内容的提问来源于stack exchange,提问作者fera fani
相关产品推荐
相关产品推荐

