一尘不染

Python Tkinter 8.5导入消息框

python

下面的代码在IDLE内运行良好,否则会出现“ NameError:全局名称’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语句,而在其他地方则需要它?


阅读 228

收藏
2021-01-20

共1个答案

一尘不染

消息框是tkinter的单独子模块,因此只需从tkinter进行完整导入即可:

from tkinter import *

不导入消息框

必须将其显式导入,如下所示:

from tkinter import messagebox

以与必须显式导入ttk相同的方式

它在空闲状态下工作的原因是因为空闲状态出于自身目的导入了消息框,并且由于空闲状态的工作方式,因此在空闲状态下可以访问其导入

2021-01-20