使用字体模块的 Tkinter 代码不能从命令行 运行?
Tkinter code using font module can't run from command line?
我有使用 tkinter 的代码,我可以从 IDLE 中 运行 就好了,但是当它从命令行 运行 时抛出异常 AttributeError: 'module' object has no attribute 'font'
。其他 tkinter 程序工作正常,但任何使用 tkinter 包的 font.py 都会给我这个错误。
我检查了我的 python 文件,c:/Python34/Lib/tkinter/font.py 在那里。我不确定为什么在命令行中,它认为字体是一个属性而不是 tkinter 包的一个模块。
示例代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
test_font = tk.font.Font(size=12,weight='bold')
root.mainloop()
这里也一样:
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter as tk
>>> tk.font
AttributeError: 'module' object has no attribute 'font'
答案很简单:Python 不会自动导入所有模块层次结构,只是因为您导入了顶级模块。那些这样做的人(例如 os
,这将使 os.path
可用)必须明确地为此编写代码。
然而,由于 IDLE 使用 tkinter
本身,它已经导入了 tkinter.font
,因此您认为您可以在没有导入的情况下逃脱。你不能。只需添加 import tkinter.font
,就可以了。
我有使用 tkinter 的代码,我可以从 IDLE 中 运行 就好了,但是当它从命令行 运行 时抛出异常 AttributeError: 'module' object has no attribute 'font'
。其他 tkinter 程序工作正常,但任何使用 tkinter 包的 font.py 都会给我这个错误。
我检查了我的 python 文件,c:/Python34/Lib/tkinter/font.py 在那里。我不确定为什么在命令行中,它认为字体是一个属性而不是 tkinter 包的一个模块。
示例代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
test_font = tk.font.Font(size=12,weight='bold')
root.mainloop()
这里也一样:
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter as tk
>>> tk.font
AttributeError: 'module' object has no attribute 'font'
答案很简单:Python 不会自动导入所有模块层次结构,只是因为您导入了顶级模块。那些这样做的人(例如 os
,这将使 os.path
可用)必须明确地为此编写代码。
然而,由于 IDLE 使用 tkinter
本身,它已经导入了 tkinter.font
,因此您认为您可以在没有导入的情况下逃脱。你不能。只需添加 import tkinter.font
,就可以了。