0

同时导入 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()或引发软锁定解释器或 python 进程的任何代码。 看来,在打开 a 时加载时会出现问题,因为以下片段按预期工作:SystemExit
pypercliptkFileDialog

import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit

但是,无论如何,关键部分之后的每一行代码都按预期执行,但提升SystemExit将创建一个软锁。
这不能用作解决方法,因为 python 不允许卸载模块。

我究竟做错了什么?任何解决方法的想法?

4

1 回答 1

0

这不是一个真正的解决方案,但我能想到的最好的解决方案是:从 python 2.7 切换到 python 3.7(因此从 Tkinter 8.5 到 8.6)对我来说是诀窍。

当然,这还有很多其他的含义,我无法测试。

在旁注中 - 因为其他人无法复制这个问题:我有机会在另一台 Windows 10 机器上运行我的代码片段 - 它在相同的设置下完美运行。所以这个问题肯定与底层系统有关,而不是 pyperclip 或 Tkinter 本身。

于 2018-12-02T05:37:27.650 回答