【问题标题】:Continuously Updating PySimpleGUI window不断更新 PySimpleGUI 窗口
【发布时间】:2021-12-30 04:00:11
【问题描述】:

我正在创建一个程序,我想在单击开始后连续更新值。

直到用户点击停止按钮,我希望值不断更新

我使用 for 循环进行测试

    for i in range(1000):
        window[-TEXT-].update(function())

基本上在循环完成运行后,它会直接更新最后一个值

我也使用 time.sleep(0.1) 来跟踪它,但没有用

【问题讨论】:

  • 像所有的 GUI 框架一样,PySimpleGui 是事件驱动的。当您进行更新时,不会绘制任何内容 - 只是发送一条消息。当您返回主循环时,消息将被分派和处理。只要你在循环,主循环就不能运行,你的 UI 也不能更新。您需要为此使用计时器和计时器事件。另请注意,您不能从字面上“连续更新”——您的显示器每秒仅刷新大约 60 次。

标签: python user-interface pysimplegui


【解决方案1】:

调用window[-TEXT-].update(function())不会更新界面,如何更新界面?

  • 循环到下一个window.read()
  • 之后拨打window.Refresh()

如果它是周期性的,您可以使用window.read 的选项timeout 对其进行计数。

count = 1000

while True:

    event, values = window.read(timeout=20)     # 20ms

    if event in (sg.WINDOW_CLOSED, 'Exit'):
        break

    elif event == sg.TIMEOUT_EVENT and count:
        window[-TEXT-].update(function())
        count -= 1

window.close()

【讨论】:

  • 嗯,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2020-07-12
  • 2021-06-13
  • 1970-01-01
相关资源
最近更新 更多