如何在 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__
.
我无法在任何地方解决问题,所以我认为是时候自己 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__
.