Tkinter: обновить текстовый виджет из переменной - PullRequest
0 голосов
/ 09 мая 2019

У меня есть переменная, которая обновляется при нажатии кнопки, и я хочу показать значение переменной в виджете «Текст», но я получаю пустое значение каждый раз, несмотря на проверку, что переменная не пуста.

Я использую StringVar с именем var в качестве посредника, но результат по-прежнему пуст.

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 '

(что является ожидаемым / желаемым)

1 Ответ

2 голосов
/ 09 мая 2019

Текст не отображается, потому что var = '' в строке result_text.insert('1.0',var.get()) и вы не можете нажать Button до mainloop, поэтому, введя ту же строку в функции get_tags(), вы должны решить проблему.

Но в этот момент я удивляюсь, зачем тебе вообще нужно var. Если вы не используете его для чего-либо другого, вы должны удалить его и insert в Text напрямую.

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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...