【问题标题】:Tkinter: update Text widget from variableTkinter:从变量更新文本小部件
【发布时间】:2019-05-09 14:36:39
【问题描述】:

我有一个在单击按钮时更新的变量,我想在 Text 小部件中显示该变量的值,但是尽管检查了该变量不为空,但我每次都得到一个空白。

我使用名为varStringVar 作为中间人,但结果仍然是空白。

from tkinter import *
import time

var = None

def get_tags():
    tag_info={'hashtags':"Loading..."}
    var.set(str(tag_info.get('hashtags','')))

if __name__ == '__main__':
   root = Tk()
   root.title("Tag Generator")
   var = StringVar(root)
   show_button = Button(root, text='Show',
          command=lambda: get_tags())
   show_button.grid(column=2,columnspan=1, padx=5, pady=5, row=num+1)

   result_text = Text(root)
   result_text.grid(column=0,columnspan=3, padx=5, pady=5, row=num+2, rowspan=4)
   result_text.insert('1.0',var.get())

   while True:
       time.sleep(0.01)
       root.update()

如何在我的文本小部件中显示var 的内容?

编辑:我的 var 变量的内容:

var.get()
Out[86]: '.\n.\n.\n.\n.\n.\n.\n.\n.\n.\n#cat #dog #catsofinstagram #cats #pet #dogsofinstagram #catlover #cute #love #dogs #pets #catstagram #instagood #puppy #kitty #animals #petstagram #dogstagram #gato #kitten #animal #instadog #catoftheday #doglover #cats_of_instagram #adorable #instagram #dogoftheday #instacat #meow '

(这是预期/期望的)

【问题讨论】:

  • 我在您的代码中添加了必要的行以使其可运行,看起来没有问题。 var.get() 正在将文本添加到 Text 小部件中,这可能与 tag_info 有关尝试将其打印到控制台并检查它是否有任何价值?
  • var.get() 单独运行似乎很好,我编辑了我的问题来演示
  • 我认为问题在于 Text 小部件的内容没有更新
  • 我们无法运行你的代码,它有很多问题。
  • @BryanOakley 感谢您的启发性评论。看来我忘了添加var 的导入和初始声明。我将相应地编辑我的问题并谦虚地请求您的原谅

标签: python tkinter


【解决方案1】:

文本没有显示,因为result_text.insert('1.0',var.get()) 行的var = '' 并且您不能在mainloop 之前按Button,因此通过将同一行放在函数get_tags() 中应该可以解决问题。

但在这一点上,我想知道为什么你甚至需要var。如果您没有将其用于其他任何用途,则应将其删除并直接在Text 中删除insert

def get_tags():
    tag_info={'hashtags':"Loading..."}
    tag_info = my_file.get_tags()
    var.set(str(tag_info.get('hashtags','')))
    result_text.insert('1.0', var.get())

【讨论】:

  • 我添加了 var 是因为我在直接输入文本时遇到了同样的问题,并认为这是格式问题
  • 你想要直线上的文字吗?由于字符串有很多\n,它们会将文本移到下一行..
  • 不,这对于预期的输出来说是正常的,您的修复工作完美
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
  • 2013-01-15
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多