Python中from tkinter import *与单独导入messagebox的区别
导入逻辑说明
from tkinter import * 并不会真的导入tkinter下的所有内容,Python的import *语法的导入范围由对应模块根目录下__init__.py文件中的__all__列表决定,只有在这个列表里声明的对象才会被*导入。
两行导入语句的区别
from tkinter import *
这行只会导入tkinter主模块中被纳入__all__列表的常用类、函数和变量,比如Tk、Button、Entry这些界面组件都在列表中,但是messagebox属于tkinter的独立子模块,并没有被加入tkinter默认的__all__列表,所以不会被*语法导入。from tkinter import messagebox
这行是显式导入tkinter的messagebox子模块到当前命名空间,只有执行了这行导入,你才能直接调用messagebox.showinfo()、messagebox.showerror()这类消息弹窗方法。如果没有这行导入,直接使用messagebox会触发NameError报错,你也可以选择用import tkinter之后调用tkinter.messagebox.xxx()的方式使用,不需要单独导入。
内容的提问来源于stack exchange,提问作者John Pandian
相关产品推荐
相关产品推荐

