导入整个包在IDLE中工作,但不在shell中。以下在IDLE中工作正常:
import tkinter as tk
tk.filedialog.askopenfilename()
在shell中,我收到此错误:
AttributeError: 'module' object has no attribute 'filedialog'
我知道我必须import tkinter.filedialog
才能在shell中完成这项工作。
为什么IDLE和shell之间存在差异?我如何让IDLE像shell一样?让脚本在IDLE中工作并在shell中失败可能会令人沮丧。
我正在使用Python 3.4。
答案 0 :(得分:1)
这是我为将来的3.5.3和3.6.0a4版本修复的IDLE错误。 Tracker issue.
对于现有的3.5或3.4版本,请在LOCALHOST行之前将以下内容添加到idlelib / run.py.
for mod in ('simpledialog', 'messagebox', 'font',
'dialog', 'filedialog', 'commondialog',
'colorchooser'):
delattr(tkinter, mod)
del sys.modules['tkinter.' + mod]
我认为这适用于早期的3.x版本,但没有安装它们进行测试。对于现有的3.6.0a_版本,请更换“colorchooser”'与&#t; ttk'。