【问题标题】:Import * statement in PythonPython 中的 import * 语句
【发布时间】:2014-08-23 07:39:28
【问题描述】:
我以为
from tkinter import *
将所有名称导入我当前文件的命名空间,以便我可以直接访问所有名称。但是,我在实例化消息框时遇到错误:
messagebox.showinfo("Something")
添加后
from tkinter import messagebox
一切正常。我不明白为什么。第一个 import 语句不是已经导入了 tkinter 模块中的所有名称,包括消息框吗?
【问题讨论】:
标签:
python
import
tkinter
【解决方案1】:
导入模块 (tkinter) 不会自动导入子模块 (tkinter.messagebox),除非模块明确为您执行。
【解决方案2】:
messagebox 是 tkinter 的一个子模块。
您应该导入模块“消息框”
(使用“import ... as ...”使其更短)
import tkinter.messagebox
tkinter.messagebox.showinfo("Something")
或者如你所想,
from tkinter import messagebox
【解决方案3】:
由于消息框是 Tkinter 模块中的一个文件,因此您无法通过调用 Tkinter 来访问它。要导入子模块,您必须像这样调用特定文件:
from tkinter import messagebox