我正在使用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循环。 谢谢。
答案 0 :(得分:1)
如果您希望在下一次致电Window.Refresh()
之前显示某些内容,则需要向Window.Read()
添加呼叫。在文档和许多演示程序中都有讨论。
我知道这是测试代码,但是不建议您将睡眠状态放入事件循环中。