同时导入了tkFileDialog和pyperclip的脚本不会退出。 (Python2.7) 工作示例,我的脚本按预期退出:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
以及:
import pyperclip
print ('whatever')
但是,以下内容将阻止我的脚本退出(为强调起见添加了{raise SystemExit
):
import Tkinter, tkFileDialog
import pyperclip
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
raise SystemExit
导入两个模块都可以正常工作,必须打开tkFileDialog才能创建错误。
当作为脚本调用时,调用os._exit()
或引发SystemExit
的任何代码会软锁定解释器或python进程。
看来,打开pyperclip
时加载tkFileDialog
时会出现问题,因为以下片段按预期工作:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit
尽管如此,无论如何,关键部分之后的每一行代码均按预期执行,但是提高SystemExit
会创建一个软锁。
但是,由于python不允许卸载模块,因此不能将其用作解决方法。
我在做什么错?有任何解决方法的想法吗?
答案 0 :(得分:0)
这不是真正的解决方案,但是我能提供的最好的解决方案是: 从python 2.7切换到python 3.7(因此从Tkinter 8.5切换到8.6)对我来说有用。
当然,这还有很多其他含义,我无法测试。
在旁注中-由于其他人无法复制该问题: 我有机会在另一台Windows 10计算机上运行我的代码片段-在相同的设置下它可以完美地工作。因此,问题肯定与底层系统有关,而不是pyperclip或Tkinter本身。