如何在 window 中实时更新印刷文本?

How to have live update of printed text in the window?

我正在使用 Pysimplegui 在执行事件后在 for 循环中输出一些文本。但是,当 for 循环结束时,我只能一次看到所有文本。当 for 循环为 运行 时,我看不到它。 gui 显示 "not responding"(但它是 运行)。知道如何解决这个问题吗?

当我有一个 for 循环并且在 for 循环中事件 运行 需要时间执行时,这似乎会发生。下面是我的代码。

import PySimpleGUI as sg
import time

def excecutetest(command):
        for i in range(5):
            print (command + str(i))
            time.sleep(2)

layout = [      
    [sg.Text('Information:', size=(40, 1))],      
    [sg.Output(size=(88, 20))],      
    [sg.Text('Input:', size=(15, 1)), sg.InputText(focus=True), sg.Button('Run', bind_return_key=True)],
    [sg.Button('EXIT')]      
        ] 

window = sg.Window('testing', layout)      

# ---===--- Loop taking in user input and using it to call scripts --- #      

while True:      
  (event, value) = window.Read()      
  if event == 'EXIT'  or event is None:      
      break # exit button clicked      
  if event == 'Run':      
      excecutetest(value[0])
window.Close()

我希望 window 实时输出每个 for 循环。 谢谢。

如果您希望在下一次调用 Window.Read() 之前显示某些内容,则需要添加对 Window.Refresh() 的调用。它在文档和许多演示程序中进行了讨论。

我知道这是测试代码,但不建议将睡眠放入事件循环中。