首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tk messagebox导入混乱

tk messagebox导入混乱
EN

Stack Overflow用户
提问于 2013-05-04 21:24:36
回答 2查看 27.2K关注 0票数 14

我现在刚刚开始学习tkinter,在导入messagebox时,我发现我不能真正理解import语句。

让我困惑的是:

代码语言:javascript
复制
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',而代码:

代码语言:javascript
复制
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中定义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 22:57:24

tkinter.messagebox是一个模块,不是一个类。

因为它不是在tkinter.__init__.py中导入的,所以在使用它之前必须显式地导入它。

代码语言:javascript
复制
import tkinter
tkinter.messagebox  # would raise an ImportError
from tkinter import messagebox
tkinter.messagebox  # now it's available eiter as `messagebox` or `tkinter.messagebox`
票数 25
EN

Stack Overflow用户

发布于 2015-04-22 22:20:16

尝尝这个

代码语言:javascript
复制
import sys

from tkinter import *

..。和你的代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16374775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档