Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么尝试创建tkinter messagebox会导致';模块不可调用';错误?_Python_Tkinter_Messagebox - Fatal编程技术网

Python 为什么尝试创建tkinter messagebox会导致';模块不可调用';错误?

Python 为什么尝试创建tkinter messagebox会导致';模块不可调用';错误?,python,tkinter,messagebox,Python,Tkinter,Messagebox,在这种情况下,当我运行它并按下想要播放的'yes'选项时,我得到一个错误 第36行,在 messagebox(“蛇”,“玩得开心!”) TypeError:“模块”对象不可调用 我不确定为什么会出现此错误,因为我多次导入了messagebox模块,但它仍然无法工作。有人能提供改进或解释吗 代码: #导入我需要的模块 进口tkinter 从tkinter进口* 从msvcrt导入* #单独导入messagebox模块 从tkinter导入消息框 #关闭窗口的函数 def closeitall(自

在这种情况下,当我运行它并按下想要播放的
'yes'
选项时,我得到一个错误

第36行,在
messagebox(“蛇”,“玩得开心!”)
TypeError:“模块”对象不可调用
我不确定为什么会出现此错误,因为我多次导入了
messagebox
模块,但它仍然无法工作。有人能提供改进或解释吗

代码:

#导入我需要的模块
进口tkinter
从tkinter进口*
从msvcrt导入*
#单独导入messagebox模块
从tkinter导入消息框
#关闭窗口的函数
def closeitall(自身):
董事会
#创建游戏板
board=tkinter.Tk()
#设置背景色
线路板配置(后台=“#B3C9D0”)
#设置板窗口的标题
董事会名称(“蛇”)
#设置板的大小
板的几何形状(“700x500”)
#使电路板无法调整大小
板。可调整大小(0,0)
#提问
play=messagebox.askquestion(“蛇”,“你想玩蛇吗?”)
#如果答案为“否”,则关闭窗口
如果播放=“否”:
closeitall(董事会)
#创建一个messagebox
其他:
messagebox(“蛇”,“玩得开心!”)
#按下退出键时关闭电路板
board.bind(“,closeitall)
board.mainloop()

您正在像使用函数一样使用
messagebox


它实际上是一个模块,所以不能调用它

您应该使用类似

tkinter.messagebox.showinfo("Snake","Have fun!")

因为messagebox是一个模块,而不是一个函数。

请验证您编写的代码格式…为什么要调用
tkinter.messagebox
?。不要因为第一种方法不起作用而多次导入某些内容,它会使事情变得更糟。您正在运行哪个版本的python?每个模块的名称都不同。我目前运行的是3.3.3,在我的上一个程序中,我必须将tkinter.messagebox单独导入tkinter,因为没有它它它就无法工作。messagebox是一个
tkinter
子模块,它包含许多有用的函数来显示不同类型的对话框。这里有一个我刚刚找到的描述它们的例子(注意它是为Python 2编写的,所以导入的
不同)。谢谢,你让我意识到我完全忘了把showinfo放进去,这把一切都搞砸了
tkinter.messagebox.showinfo("Snake","Have fun!")