使用字体模块的 Tkinter 代码无法从命令行运行?



我有使用 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,它就可以工作。

最新更新