TkMessageBox - 没有模块

44
import TkMessageBox

当我导入TkMessageBox时,它显示错误信息'ImportError: No module named 'TkMessageBox'

据我所知,我正在使用Python 3.3.2和Tk 8.5。

我是在使用错误的Python版本还是导入方式错误?

任何答案都将非常有用。或者,在我使用的版本中是否有类似的东西?


你需要一个消息框输出吗? - ManInTheMiddle
1
import TkMessageBox => from tkinter import messagebox。然后可以像这样使用:messagebox.askokcancel(...) - themefield
5个回答

89
在Python3.x中有一些变化:
   >>> import tkinter
   >>> import tkinter.messagebox
   >>>

我的意思是Python2.x中称为tkMessageBox的东西在Python3.x中变成了tkinter.messagebox


3
所以你可以这样调用:tkinter.messagebox.showinfo("恭喜", "你赢了!") - s2t2
能否解释一下你的行为? - user13120093
抱歉,我需要仔细阅读您的问题。我投票支持重新开放您的帖子,并为@Trey点赞。 - Billal Begueradj

11

如果您不想为Python 2和Python 3更改代码,可以使用导入方式:

try:
    from tkinter import messagebox
except ImportError:
    # Python 2
    import tkMessageBox as messagebox

:edit: 然而,在Debian中,由于其政策的原因,tkinter是一个单独的软件包。这会导致上面的代码错误地回退到Python 2。因此,您应该这样做:

import sys
if sys.version_info.major >= 3:
    from tkinter import messagebox
else:
    import tkMessageBox as messagebox

然后,如下使用消息框将适用于任何版本:
messagebox.showerror("Error", "Message.")

8
在Python 2.x中,要导入模块,你需要使用import tkMessageBox。但是在Python 3.x中,这个模块已被重命名为tkinter.messagebox。希望这有所帮助 :))

4

适用于 Python 3.x

导入 tkinter 库

导入 tkinter.messagebox 模块


0

在Python 3中使用tkinter导入messagebox messagebox.showinfo(title=None, message=None, **options)


2
欢迎来到stackoverflow。感谢您的贡献,但请在您的解决方案中提供进一步的解释:不要仅仅给出修复方法,还要解释它的作用以及出了什么问题。 - Roim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接