14

我现在才刚开始学习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"):
...

...顺利工作。

如果我用from tkinter import *.

tkinter 的帮助显示messagebox在列表中PACKAGE CONTENTS,但我无法以正常方式加载它。

所以我的问题是,为什么......以及我不明白的进口是什么?

只是想我应该提一下——该代码仅在 Python 3 中有效,在 Python 2.xmessagebox中被调用tkMessageBox且未在tkinter.

4

2 回答 2

25

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`
于 2013-05-04T14:57:23.503 回答
0

尝试这个

import sys

from tkinter import *

...和你的代码

于 2015-04-22T14:20:16.193 回答