【问题标题】:Why can't I store the text from a Tk text widget into a variable为什么我不能将 Tk 文本小部件中的文本存储到变量中
【发布时间】:2016-10-18 15:31:17
【问题描述】:

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

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 毫秒设置了self.data,并且在用户有机会输入任何内容之前。

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


【解决方案1】:

Bryan 的评论是正确的,您获取数据的速度非常非常快,然后就再也不会更新了。要解决它,由于您以后需要引用它,因此您需要使用可以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 的命令;你可以保留你当前的按钮,它应该打印现在得到的数据集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多