python - 为什么我需要导入 tkinter.messagebox 但导入 tkinter 后不需要导入 tkinter.Tk()?

标签 python import

有一个错误:“AttributeError: module 'tkinter' has no attribute 'messagebox'” 即使 import tkinter 一开始就已经给出了,为什么 tkinter.Tk 没有错误()语句 ?

我发现 import 语句不像 C 语言中的 #include 语句,所以我可以理解我们需要导入 tkinter.messagebox 如果我们想使用它,即使 import tkinter 已经给出,但让我困惑的是为什么 tkinter.Tk 即使我们没有写也能很好地工作像 import tkinter.Tk 这样的东西?

import time, sys
import tkinter
#import tkinter.messagebox

window = tkinter.Tk()
tkinter.messagebox.showwarning()
window.mainloop()

最佳答案

tkinter.Tk() 函数是 tkinter 的一部分。然而,messagebox 函数是 tkinter.messagebox 的一部分,tkinter.messageboxtkinter 中的另一个模块。这就是为什么 tkinter.Tk() 只需要导入 tkinter 就可以正常工作,但是 tkinter.messagebox 需要导入消息框模块。

有关 Tkinter 模块的更多信息,请访问 official documentation .

如果您满足以下任一条件,就可以让它工作:

from tkinter import messagebox

然后像这样调用函数:

messagebox.showwarning()

或者像您在代码中注释的那样导入:

import tkinter.messagebox

像你一样打电话:

tkinter.messagebox.showwarning()

希望对您有所帮助。

关于python - 为什么我需要导入 tkinter.messagebox 但导入 tkinter 后不需要导入 tkinter.Tk()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56268474/

相关文章:

python - scikits学习和nltk : Naive Bayes classifier performance highly different

python - 按开始/结束时间戳对数据帧行进行分组

python - 如何在pyspark中将DenseMatrix转换为spark DataFrame?

python - 如何清理 pandas 中的电话号码

java - 将 Eclipse 中的多个文件夹分别导入一个项目

c++ - 将 blender 模型导入 DirectX 11.2 C++ 应用程序

python - 与 python import (绝对和相对)混淆

python - xlsxwriter 中条件匹配时添加列

r - 在R中导入多个文本文件,并从预定列表中为其分配名称

python - 不清楚导入方式