我现在刚刚开始学习tkinter,在导入messagebox时,我发现我不能真正理解import语句。
让我困惑的是:
import tkinter as tk
def text_box():
if tk.messagebox.askokcancel("Quit", "Never Mind"):
root.destroy()
root = tk.Tk()
button = tk.Button(root, text="Press the button", command=text_box)
button.pack()
root.mainloop()编译正常,但按下按钮将显示错误'module' object has no attribute 'messagebox',而代码:
import tkinter as tk
from tkinter import messagebox
...
if messagebox.askokcancel("Quit", "Never Mind"):
......works一帆风顺。
如果我用from tkinter import *导入,我会得到一个类似的错误。
tkinter的帮助在PACKAGE CONTENTS列表中显示messagebox,但我就是不能以正常的方式加载它。
所以我的问题是,why...and,导入有什么我不明白的?
我想我应该提一下--代码只能在Python3中运行,而在Python2.x中,messagebox被称为tkMessageBox,并且没有在tkinter中定义。
发布于 2013-05-04 22:57:24
tkinter.messagebox是一个模块,不是一个类。
因为它不是在tkinter.__init__.py中导入的,所以在使用它之前必须显式地导入它。
import tkinter
tkinter.messagebox # would raise an ImportError
from tkinter import messagebox
tkinter.messagebox # now it's available eiter as `messagebox` or `tkinter.messagebox`发布于 2015-04-22 22:20:16
尝尝这个
import sys
from tkinter import *..。和你的代码
https://stackoverflow.com/questions/16374775
复制相似问题