So bekommen Sie den Namen des Master-Rahmens in Tkinter
um eine lange Geschichte kurz zu machen: gibt es eine Funktion, um den Namen des Master-Rahmens eines widgets in Tkinter?
Lassen Sie mich Ihnen sagen, ein wenig mehr:
Es gibt einen Knopf, mit dem Namen "BackButton"
self.BackButton = Button(self.SCPIFrame, text = "Back", command = self.CloseFrame)
self.BackButton.place(x = 320, y = 320, anchor = CENTER)
Wenn ich auf diese Schaltfläche klicken, gibt es eine Funktion namens "CloseFrame", das schließt das aktuelle Bild (und einigen anderen Sachen), in diesem Fall "SCPIFrame". Aber dafür brauche ich den Namen des Rahmens, in dem die Schaltflächen "BackButton" vorhanden ist.
Irgendwelche Ideen? Danke für die Hilfe.
InformationsquelleAutor eljobso | 2012-10-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Buchstäblich Ihre Frage zu beantworten:
winfo_parent
ist genau das, was Sie brauchen. Um nützlich zu sein, können Sie es verwenden, kombiniert mit_nametowidget
(seitwinfo_parent
tatsächlich liefert den Namen des übergeordneten Elements).self.parent_name = self.BackButton.winfo_parent()
print self.parent_name
_nametowidget
ruft die entsprechende Tkinter Beispiel.Apropos die name eines Objekts ist ein bisschen zweifelhaft, da viele Variablen gebunden werden können, die auf dieses Objekt. Wir sind jedoch in einem Fall, in dem Tkinter-Dereferenzierung auf der Oberseite der Tcl bietet eine einzigartige name als Tcl-variable name.Ich denke, der beste Weg ist, die zu benutzen .master-Attribut, das ist buchstäblich die master-Instanz 🙂
Zum Beispiel (ich Tue dies, IPython):
Wenn Sie verwenden eine objektorientierte Art der Programmierung des master-Rahmens ist entweder das Objekt selbst oder einem Attribut des Objekts. Zum Beispiel:
Einen anderen einfachen Weg, dieses problem zu lösen, in eine nicht-OO Weg ist, um entweder speichern Sie das master in globaler Fenster (funktioniert gut für sehr kleine Programme, die aber nicht empfehlenswert für alles, was, die werden im Laufe der Zeit), oder man kann Sie in der callback. Zum Beispiel: