4

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

当我有一个 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()

我希望窗口能够实时输出每个 for 循环。谢谢你。

4

1 回答 1

3

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

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

于 2019-08-07T15:37:28.883 回答