Ich suchte auf dieser Website und anderen Websites, und ich kann immer noch nicht herausfinden, wie Sie den Text eines Etiketts in einem anderen Rahmen ändern. Hier ist mein Code:Zugriff auf ein Widget aus einem anderen Rahmen in tkinter
from tkinter import *
class mainW(Tk):
def __init__(self, parent):
Tk.__init__(self, parent)
self.parent = parent
self.widgets()
def widgets(self):
self.left = leftF(self)
self.left.grid(row=0, column=0)
self.right = rightF(self)
self.right.grid(row=0, column=1)
class leftF(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, bg="blue")
self.parent = parent
self.leftWidgets()
def leftWidgets(self):
self.Label = Label(self, text="Hello", bg="red", fg="white")
self.Label.grid(row=0, column=0, padx=5, pady=5)
class rightF(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, bg="white")
self.parent = parent
self.rightWidgets()
def rightWidgets(self):
self.Button = Button(self, text="change text", bg="yellow", fg="black", command=self.action)
self.Button.grid(row=0, column=0, padx=5, pady=5)
def action(self):
self.targetFrame = leftF(self)
self.targetLabel = self.targetFrame.Label
self.targetLabel.config(text="World")
if __name__=="__main__":
mainW(None).mainloop()
Wesentlichen die Aktion, die der Taste zugeordnet ist auf rightF Wohnsitz sollte den Text des Etiketts auf ändern leftF. Wenn mich jemand in die richtige Richtung lenken kann, würde ich es sehr schätzen.
Vielen Dank.
Wie bei jedem anderen Python-Objekt benötigen Sie lediglich einen Verweis auf dieses Objekt. –
@BryanOakley Das mache ich mit self.targetFrame.Label, aber es scheint nichts zu tun zu haben. –
Leider sind Sie nicht! Sie erstellen ein neues Objekt mit self.targetFrame = leftF (self). Sie müssen auf das Original verweisen. – Jannick