pysimplegui 无按钮文本更新

pysimplegui Buttonless Text Update

我正在尝试创建一个大时钟作为 gui 测试项目。 window 应该 运行 没有任何输入,只显示时间,同时每秒更新 10 次。 不管我到目前为止尝试了什么,我都无法让文本更新到我当前的时间。

这是我的代码:

import PySimpleGUI as gui
import time

gui.theme('Reddit')

clockFont = ('Arial', 72)

layout = [  
            [gui.Text('Loading...',size=(8,2), justification='center', key='CLK', font=clockFont)]
]

window = gui.Window('Big Clock', layout, size=(500, 150), finalize=True)

window.Resizable = True
while True:
    event, values = window.read()
    print(event)
    if event in (None, gui.WIN_CLOSED):
        break
    if event == 'Run':
        currentTime = time.strftime("%H:%M:%S")
        window['CLK'].update(currentTime)
        window.refresh()
        time.sleep(0.1)
window.close()

此外,Whosebug 上有人在 post 中表示不应在循环环境中使用 time.sleep()。我应该改用什么?

事件'Run'来自哪里?

尝试在方法 window.read 中使用选项 timeout 来生成事件 sg.TIMEOUT_EVENT

timeout

Milliseconds to wait until the Read will return IF no other GUI events happen first

您还可以为 time.sleep 使用多线程并调用 window.write_event_value 生成事件来更新 GUI。

import PySimpleGUI as gui
import time

gui.theme('Reddit')

clockFont = ('Arial', 72)

layout = [
    [gui.Text('Loading...',size=8, justification='center', key='CLK', font=clockFont)]
]

window = gui.Window('Big Clock', layout, finalize=True)

while True:

    event, values = window.read(timeout=100)

    if event in (None, gui.WIN_CLOSED):
        break

    if event == gui.TIMEOUT_EVENT:
        currentTime = time.strftime("%H:%M:%S")
        window['CLK'].update(currentTime)

window.close()