为什么需要import tkinter.messagebox as messagebox
Topic source这是为了简化tkinter中的messagebox函数的调用。写了这句话就可以用messagebox这个单词直接调用,你如果把这句话去掉就需要将messagebox函数的调用修改为tkinter.messagebox.xxx这种调用方式
我注释第二行代码import tkinter.messagebox as messagebox,将 messagebox.showinfo('Message', 'Hello, %s' % name) 改成 tkinter.messagebox.showinfo('Message', 'Hello, %s' % name),会报错——NameError: name 'tkinter' is not defined
name 'tkinter' is not defined,是因为你没
import tkinter
,
from tkinter import *
无法导入
messagebox
,是因为它不是一个类,没有__init__()。
因为messagebox是tkinter模块中的一个子模块,from tkinter import *实际上是将tkinter模块里面的__init__子模块的所有内容导出,并未导出tkinter模块的messagebox子模块的内容
我再帮你通俗一点讲,你打开tkinter的文件夹的时候,你会看到一堆.py的文件,当你from tkinter import *的时候实际上导入的是tkinter.__init__.py,所以你需要用到messagebox的话只能是from tkinter import messagebox.
- 1
才子的麦穗
有了第一行代码不就意味着将tkinter模块中所有函数都导入进来,为什么还需要第二行代码呢?删除之后是会报错的name 'messagebox' is not defined