Python Tkinter-在GUI中更新函数时循环函数

Python Tkinter-在GUI中更新函数时循环函数,python,tkinter,Python,Tkinter,如何循环在窗口中显示值的函数 因此,我从telethon获得了这个功能,可以从电报中获取所有新消息: def get_message(): for message in client.iter_messages('@snoopdoggystyledogg', limit=10): msg_history = utils.get_display_name(message.sender), message.message return msg_history

如何循环在窗口中显示值的函数

因此,我从telethon获得了这个功能,可以从电报中获取所有新消息:

def get_message():
    for message in client.iter_messages('@snoopdoggystyledogg', limit=10):
        msg_history = utils.get_display_name(message.sender), message.message
        return msg_history
我用这个来展示它:

messages = Text(root)
messages.insert(INSERT, '')
messages.insert(INSERT, get_message())

messages.pack()
但问题是,如果我不重新打开应用程序,消息不会得到更新。。知道如何使它循环并在我的聊天屏幕上更新吗?

我会使用
after()
继续循环

下面是一个简单的例子:

from tkinter import *
# other imports for your client message reader


root = Tk()

def get_message():
    for message in client.iter_messages('@snoopdoggystyledogg', limit=10):
        msg_history = utils.get_display_name(message.sender), message.message
        messages.insert(INSERT, msg_history)
    root.after(5000, get_message)

messages = Text(root)
messages.pack()
messages.insert(INSERT, '')
get_message()

root.mainloop()

我认为您可能需要解决的问题是跟踪最后一条消息或最后一条消息,这样您就不会重新加载旧消息。

将更新文本框的代码放入函数中,然后使用按钮调用函数或使用
after
方法按计划调用函数。同意@Novel。这是一个简单的修复,可以使用
after()
方法通过按钮或定时循环完成。如果它是一个实时提要,我会使用
after()
方法来检查是否有新消息,如果消息是新的,则拉取消息并将其插入文本框。