我在这个网站和其他网站上搜索过,我仍然无法弄清楚如何更改位于不同框架上的标签文本。这是我的代码:
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()
基本上,分配给驻留在 rightF 上的按钮的操作应该会更改 leftF 上标签的文字。如果有人能指引我走向正确的方向,我真的很感激。
谢谢。
答案 0 :(得分:3)
问题是您正在使用
创建新对象self.targetFrame = leftF(self)
并没有引用原始的。将动作功能更改为
def action(self):
self.parent.left.Label.config(text="World")
它会起作用。