文字列「currentMessage」とそれを表示するラベルがあります。「currentMessage」に新しい値を提供するテキスト ウィジェットを含むトップレベル ウィジェットがあります。
from tkinter import *
from tkinter import ttk
root = Tk()
mainFrame = ttk.Frame(root)
mainFrame.grid()
currentMessage = 'current Message'
ttk.Label(mainFrame, text = currentMessage).grid(padx = 10, pady = 10)
def updateCurrentMessage(popupWindow):
currentMessage = popupWindow.textBox.get(0.0, END)
def changeValues():
popup = Toplevel(mainFrame)
popup.grid()
textBox = Text(popup, width = 20, height = 5)
textBox.grid(column = 0, row = 0)
textBox.insert(END, 'new message here')
b = ttk.Button(popup, command = lambda: updateCurrentMessage(popup))
b.grid(column = 0, row = 1, padx = 5, pady = 5)
b['text'] = 'Update'
theButton = ttk.Button(mainFrame, command = changeValues, text = 'Click')
theButton.grid(padx = 10, pady = 10)
mainFrame.mainloop()
この関数を使用して、トップレベルの「textBox」テキストウィジェットのコンテンツを取得しようとしました:
def updateCurrentMessage(popupWindow):
currentMessage = popupWindow.textBox.get(0.0, END)
しかし、私はエラーが発生しました
「トップレベル」オブジェクトには属性「textBox」がありません
では、'popup' の子ウィジェットであるウィジェット 'textBox' のコンテンツにアクセスするにはどうすればよいでしょうか (このトップレベル ウィジェットは関数 changeValues() が呼び出されたときにのみ作成されます)。