Discuss / Python / 为什么需要import tkinter.messagebox as messagebox

为什么需要import tkinter.messagebox as messagebox

Topic source
from tkinter import *
import tkinter.messagebox as messagebox

有了第一行代码不就意味着将tkinter模块中所有函数都导入进来,为什么还需要第二行代码呢?删除之后是会报错的name 'messagebox' is not defined

Nb-Boom

#2 Created at ... [Delete] [Delete and Lock User]

这是为了简化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

YuanYin233X

#4 Created at ... [Delete] [Delete and Lock User]

name 'tkinter' is not defined,是因为你没 

import tkinter

from tkinter import *

无法导入

messagebox

,是因为它不是一个类,没有__init__()。

因为messagebox是tkinter模块中的一个子模块,from tkinter import *实际上是将tkinter模块里面的__init__子模块的所有内容导出,并未导出tkinter模块的messagebox子模块的内容

xian_wen

#6 Created at ... [Delete] [Delete and Lock User]

from tkinter import messagebox 也行

用 import tkinter.messagebox 也是可以的

我再帮你通俗一点讲,你打开tkinter的文件夹的时候,你会看到一堆.py的文件,当你from tkinter import *的时候实际上导入的是tkinter.__init__.py,所以你需要用到messagebox的话只能是from tkinter import messagebox.


  • 1

Reply