如何在 PySimpleGUI 代码中实现 ever 运行 循环?

How to implement a ever running loop within a PySimpleGUI code?

我无法在任何地方解决问题,所以我认为是时候自己 post 这个问题了。

这是我的代码:

import serial
from serial import Serial
import PySimpleGUI as sg



ser = serial.Serial('COM3', 115200, timeout=1)
read = False

sg.theme('DarkAmber')
layout = [  [sg.InputText(), sg.Button('Empfindlichkeit einstellen')],
            [sg.Button('start'), sg.Button('end')] ]

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



while True:
    event, values = window.read()

    if read == True:
        reading = ser.readline()
        print(reading[0:256])

    if event == "start":
        read = True

    if event == sg.WIN_CLOSED or event == 'end':
        break

window.close()

GUI 显示得非常好,没有错误。但问题是以下部分:

    if read == True:
        reading = ser.readline()
        print(reading[0:256])

当我按下“开始”按钮一次时,这部分代码应该 运行 连续。但事实并非如此。这部分代码只执行一次,只要我按一次开始然后按任何其他按钮。我该如何解决这个问题?

event, values = window.read()

它将停在这里等待事件发生。第一次点击按钮 'start' 后,

if event == "start":
    read = True

变量 read 在该事件后设置为 True,然后再次返回 window.read() 以等待另一个事件。没有活动了,请稍等

为避免在那里等待事件,您可以在方法 window.read() 中使用选项 timeout 来确定等待的时间。

event, values = window.read(timeout=100)    # 100 ms to wait

选项 timeout,等待读取的毫秒数将 return 如果没有其他 GUI 事件首先发生。默认事件或键是 __TIMEOUT__.