首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tkFileDialog和pyperclip阻止脚本退出

tkFileDialog和pyperclip阻止脚本退出
EN

Stack Overflow用户
提问于 2018-11-04 20:57:52
回答 1查看 67关注 0票数 0

同时导入tkFileDialog和pyperclip的脚本不会退出。(Python2.7)工作示例,其中我的脚本如预期的那样退出:

代码语言:javascript
复制
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()

以及:

代码语言:javascript
复制
import pyperclip
print ('whatever')

然而,以下内容将阻止我的脚本退出(raise SystemExit是为强调而添加的):

代码语言:javascript
复制
import Tkinter, tkFileDialog
import pyperclip
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
raise SystemExit

只需导入两个模块就可以正常工作,必须打开一个tkFileDialog才能创建错误。当调用脚本时,调用os._exit()或任何引发SystemExit的代码都会对解释器或process进行软锁。

似乎在打开pyperclip时加载tkFileDialog时会出现问题,因为下面的片段按预期工作:

代码语言:javascript
复制
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit

不过,无论如何,关键部分执行后的每一行代码都会按预期执行,但引发SystemExit将创建一个软锁。

但这不能作为一种解决办法,因为python不允许卸载模块。

我做错了什么?有什么解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-02 05:37:27

不是一个真正的解决方案,但我能想到的最好的解决方案是:从python2.7切换到python3.7(因此从Tkinter8.5切换到8.6)。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53145399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档