为什么我不能将 Tk 文本小部件中的文本存储到变量中
Why can't I store the text from a Tk text widget into a variable
我正在尝试从文本小部件获取用户输入并将其存储在一个变量中以便稍后在我的代码中使用
self.dataset = Text(master)
self.dataset.pack()
self.data = self.dataset.get('1.0', 'end')
ttk.Button(master, text="print dataset", command=lambda: print(self.data).pack()
当我尝试按下按钮时,它打印出一个空字符串。知道为什么会这样吗?
Bryan 的评论是正确的,您获取数据的速度非常非常快,但从那时起就再也没有更新过。要解决它,因为您稍后需要引用它,所以您需要使用可以 set
的东西,例如 tkinter StringVar
;然后你的按钮命令可以变成
lambda: self.data.set(self.dataset.get('1.0','end'))
或者,由于此代码显然来自 class,您始终可以在函数中设置数据:
def setdata(self):
self.data = self.dataset.get('1.0','end')
而您获取该数据的按钮只有 self.setdata 的命令;你可以保留你当前的按钮,它应该打印现在得到的数据集。
我正在尝试从文本小部件获取用户输入并将其存储在一个变量中以便稍后在我的代码中使用
self.dataset = Text(master)
self.dataset.pack()
self.data = self.dataset.get('1.0', 'end')
ttk.Button(master, text="print dataset", command=lambda: print(self.data).pack()
当我尝试按下按钮时,它打印出一个空字符串。知道为什么会这样吗?
Bryan 的评论是正确的,您获取数据的速度非常非常快,但从那时起就再也没有更新过。要解决它,因为您稍后需要引用它,所以您需要使用可以 set
的东西,例如 tkinter StringVar
;然后你的按钮命令可以变成
lambda: self.data.set(self.dataset.get('1.0','end'))
或者,由于此代码显然来自 class,您始终可以在函数中设置数据:
def setdata(self):
self.data = self.dataset.get('1.0','end')
而您获取该数据的按钮只有 self.setdata 的命令;你可以保留你当前的按钮,它应该打印现在得到的数据集。