为何已用from tkinter import *仍需单独导入messagebox?
为什么
from tkinter import *无法导入messagebox 这是个非常常见的新手问题,完全不用不好意思。
核心原因是:from tkinter import *只会导入tkinter主模块里被指定为公开的对象,而messagebox是tkinter的一个独立子模块,不在主模块的公开导入列表里。
具体来说,Python中使用from X import *时,导入范围由X模块内的__all__变量决定(如果该变量存在)。tkinter主模块的__all__只包含窗口、基础控件这类核心对象(比如Tk、Button、Label),并没有把messagebox、filedialog这类功能子模块纳入其中。
而且,子模块不会因为你导入主模块就自动加载,必须显式导入才行——哪怕你用import tkinter,后续调用messagebox也得写成tkinter.messagebox,或者单独执行from tkinter import messagebox。
简单总结:
from tkinter import *= 导入主模块里的公开类/函数- messagebox、filedialog这类子模块需要单独导入
内容的提问来源于stack exchange,提问作者Storm Apex
相关产品推荐
相关产品推荐

