Python tkinter.messagebox.showinfo不';我不总是工作
我刚刚开始使用Python的Python tkinter.messagebox.showinfo不';我不总是工作,python,user-interface,python-3.x,tkinter,Python,User Interface,Python 3.x,Tkinter,我刚刚开始使用Python的tkinterGUI工具。在我的代码中,我创建了一个带有一个按钮的简单GUI,如果用户单击按钮,我希望向用户显示一个messagebox 目前,我使用tkinter.messagebox.showinfo方法。我在Windows 7计算机上使用IDLE编写代码。如果我从空闲状态运行代码,一切正常,但是如果我尝试在Python3解释器中独立运行它,它就不再工作了。而是将此错误记录到控制台: AttributeError:'module' object has no at
tkinter
GUI工具。在我的代码中,我创建了一个带有一个按钮的简单GUI,如果用户单击按钮,我希望向用户显示一个messagebox
目前,我使用tkinter.messagebox.showinfo
方法。我在Windows 7计算机上使用IDLE编写代码。如果我从空闲状态运行代码,一切正常,但是如果我尝试在Python3解释器中独立运行它,它就不再工作了。而是将此错误记录到控制台:
AttributeError:'module' object has no attribute 'messagebox'
你有什么建议给我吗?我的代码是:
import tkinter
class simpleapp_tk(tkinter.Tk):
def __init__(self,parent):
tkinter.Tk.__init__(self,parent)
self.parent = parent
self.temp = False
self.initialize()
def initialize(self):
self.geometry()
self.geometry("500x250")
self.bt = tkinter.Button(self,text="Bla",command=self.click)
self.bt.place(x=5,y=5)
def click(self):
tkinter.messagebox.showinfo("blab","bla")
if __name__ == "__main__":
app = simpleapp_tk(None)
app.title('my application')
app.mainloop()
这是区分大小写的-
tkinter
无论在哪里使用,都应该是tkinter
。我这样做了,并且能够运行您的示例。messagebox
,以及其他一些模块,如filedialog
,在您导入tkinter时不会自动导入。根据需要使用as
和/或from
显式导入它
>>> import tkinter
>>> tkinter.messagebox.showinfo(message='hi')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'messagebox'
>>> import tkinter.messagebox
>>> tkinter.messagebox.showinfo(message='hi')
'ok'
>>> from tkinter import messagebox
>>> messagebox.showinfo(message='hi')
'ok'
>>导入tkinter
>>>tkinter.messagebox.showinfo(message='hi')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“模块”对象没有属性“messagebox”
>>>导入tkinter.messagebox
>>>tkinter.messagebox.showinfo(message='hi')
“好的”
>>>从tkinter导入消息框
>>>messagebox.showinfo(message='hi')
“好的”
OP使用3.x(注意问题标签),其中Tkinter
重命名为Tkinter
(参见示例)。您可能正在使用2.x。能否提供完整的错误回溯,格式为代码?尝试导入模块messagebox
,然后将tkinter.messagebox.showinfo(“blab”,“bla”)
替换为messagebox.showinfo(“blab”,“bla”)
,以查看是否有更改。就是这样(从tkinter导入messagebox)谢谢你的解决方案,我不知道它是用IDLE工作的,但是用这个解决方案它可以工作。