tk messagebox importieren Verwirrung
Ich beginne gerade zu lernen, tkinter im moment, und beim Import messagebox fand ich, dass muss ich nicht wirklich verstehen, import-Anweisungen.
Die Sache, die mich verwirrt ist, dass:
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()
kompiliert in Ordnung, aber durch drücken der Schaltfläche gibt den Fehler 'module' object has no attribute 'messagebox'
während der code:
import tkinter as tk
from tkinter import messagebox
...
if messagebox.askokcancel("Quit", "Never Mind"):
...
...funktioniert ohne Probleme.
Bekomme ich eine ähnliche Fehlermeldung, wenn ich den import mit from tkinter import *
.
Hilfe für tkinter zeigt messagebox
in der Liste der PACKAGE CONTENTS
, aber ich kann nicht laden Sie es in der üblichen Weise.
Also meine Frage ist, warum...und was hat es mit dem Import, dass ich nicht verstehe?
Dachte nur, ich sollte erwähnen—der code funktioniert nur in Python 3 und Python 2.x messagebox
heißt tkMessageBox
und ist nicht definiert tkinter
.
- +1 ein guter puzzler (für jemanden, der noch nicht berührt tkinter3).
Du musst angemeldet sein, um einen Kommentar abzugeben.
tkinter.messagebox
ist ein Modul, nicht die Klasse.Da es nicht importiert
tkinter.__init__.py
Sie explizit importieren müssen Sie es, bevor Sie es verwenden können.messagebox
intkinter.__init__.py
manuell? Ich nehme an, es gab einige Grund, warum die Entwickler nicht.from tkinter import messagebox as tkMessageBox
denn neben der daraus resultierenden unqualifizierten Namen ein wenig kürzer, es ist auch die Art und Weise viele Python 2 Skripte Ehrfurcht vor ihm.versuchen, diese
... und dein code