1
このウェブサイトや他のウェブサイトで検索しましたが、別のフレームにあるラベルのテキストを変更する方法はまだ分かりません。ここに私のコードは次のとおりです。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()
基本的には、rightF上にあるボタンに割り当てられているアクションがleftF上のラベルのテキストを変更する必要があります。誰かが私を正しい方向に向けることができれば、本当に感謝します。
ありがとうございます。
他のpythonオブジェクトと同様に、必要なのはそのオブジェクトへの参照だけです。 –
@BryanOakleyそれは私がself.targetFrame.Labelでやっていることですが、何もしていないようです。 –
残念ながら、あなたはそうではありません! self.targetFrame = leftF(self)で新しいオブジェクトを作成しています。元のものを参照する必要があります。 – Jannick