2016-12-23 5 views
2

In einem in Python 3.5 geschriebenen GUI-Programm verwende ich das Tkinter-Modul. Ich definiere die Funktion, die MessageBox zu nennen wie folgt:Tkinter MessageBox gibt Fehler

def callAbout(): 
    messagebox.showinfo(title = "About", message = "My Window") 

Wenn ich versuche, auszuführen, erhalte ich die folgende Fehlermeldung:

Exception in Tkinter callback 
Traceback (most recent call last): 
    [PATH] 
    return self.func(*args) 
    File "tk-error.py", line 4, in callAbout 
    messagebox.showinfo(title = "About", message = "My Window") 
NameError: name 'messagebox' is not defined 

Es scheint, dass das Programm nicht

messagebox 
finden

aber ich frage mich warum, seit ich das ganze Modul mit

from tkinter import * 
importiert habe

Bitte fragen Sie, ob Sie den vollständigen Code benötigen. Vielen Dank im Voraus für Ihre Hilfe.

Hinzugefügt: Hier folgt der ganze Code.

from tkinter import * 

def callAbout(): 
    messagebox.showinfo(title = "About", message = "My Window") 

win = Tk() 

win.geometry('300x300') 
win.title("My First Window") 

bar_menu = Menu(win) 

menu_about = Menu(bar_menu, tearoff = 0) 
bar_menu.add_cascade(label = "About", menu = menu_about) 
menu_about.add_command(label = "About", command = callAbout) 

win.config(menu = bar_menu) 

win.mainloop() 
+0

Ja, wir würden wahrscheinlich eine Minimalversion des Codes sehen müssen ... –

+0

Bist du sicher, dass du auf Python 3 bist? Wenn Sie auf Python 2 sind, müssen Sie 'tkMessageBox importieren' – moogle

+0

@moogle: Ja, sicher bin ich auf Python 3 ... Genau Python 3.5, wie oben erwähnt. – EM90

Antwort

0

ändern messagebox.showinfo zu showinfo und fügen from tkinter.messagebox import showinfo

from tkinter import * 
from tkinter.messagebox import showinfo 


def callAbout(): 
    showinfo(title="About", message="My Window") 


win = Tk() 

win.geometry('300x300') 
win.title("My First Window") 

bar_menu = Menu(win) 

menu_about = Menu(bar_menu, tearoff=0) 
bar_menu.add_cascade(label="About", menu=menu_about) 
menu_about.add_command(label="About", command=callAbout) 

win.config(menu=bar_menu) 

win.mainloop() 

Ausgang:

enter image description here

+0

Ok, deine Antwort funktioniert tatsächlich. Aber ich würde gerne den Grund für das "Import" -Befehlsverhalten kennen ... – EM90

+0

@ EM90 Bitte, wenn meine Antwort hilft, es als richtig zu markieren – eyllanesc