为什么我不能将Tk文本小部件中的文本存储到变量中

时间:2016-06-16 22:53:09

标签: python python-3.x user-interface tkinter tk

我正在尝试从文本小部件中获取用户输入并将其存储在变量中,以便稍后在我的代码中使用

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()

当我尝试按下按钮时,它会打印一个空字符串。任何想法为什么会这样?

1 个答案:

答案 0 :(得分:1)

布莱恩的评论是正确的,您非常非常快速地获取数据,然后从未更新数据。要解决此问题,因为您需要稍后引用它,您需要使用set之类的内容,例如tkinter StringVar;然后您的按钮命令可以变为

lambda: self.data.set(self.dataset.get('1.0','end'))

或者,由于此代码显然来自一个类,因此您始终可以在函数中设置数据:

def setdata(self):
    self.data = self.dataset.get('1.0','end')

你获取该数据的按钮只有self.setdata的命令;你可以保留当前按钮,它应该打印现有的数据集。