下面的代码在IDLE内运行良好,否则会出现“ NameError:全局名称’messagebox’未定义”的情况。但是,如果我明确声明from tkinter import messagebox,则无论从哪里运行都很好。
from tkinter import messagebox
from tkinter import * from tkinter import ttk root = Tk() mainFrame = ttk.Frame(root) messagebox.showinfo("My title", "My message", icon="warning", parent=mainFrame)
为什么IDLE不需要显式import语句,而在其他地方则需要它?
消息框是tkinter的单独子模块,因此只需从tkinter进行完整导入即可:
from tkinter import *
不导入消息框
必须将其显式导入,如下所示:
以与必须显式导入ttk相同的方式
它在空闲状态下工作的原因是因为空闲状态出于自身目的导入了消息框,并且由于空闲状态的工作方式,因此在空闲状态下可以访问其导入