Python 如何在这里设置循环计时器?
我有一个带有while循环的GUI应用程序。插入中断循环的if语句时遇到问题。我想这是一个计时器,所以如果在60秒内什么都没有发生,while循环就会中断Python 如何在这里设置循环计时器?,python,loops,timer,pysimplegui,Python,Loops,Timer,Pysimplegui,我有一个带有while循环的GUI应用程序。插入中断循环的if语句时遇到问题。我想这是一个计时器,所以如果在60秒内什么都没有发生,while循环就会中断 layout = [[sg.Text('Velg mappe som skal tas backup av og hvor du vil plassere backupen')], [sg.Text('Source folder', size=(15, 1)), sg.InputText(a), sg.FolderBrow
layout = [[sg.Text('Velg mappe som skal tas backup av og hvor du vil plassere backupen')],
[sg.Text('Source folder', size=(15, 1)), sg.InputText(a), sg.FolderBrowse()],
[sg.Text('Backup destination ', size=(15, 1)), sg.InputText(b), sg.FolderBrowse()],
[sg.Text('Made by XXX™')],
[sg.Submit("Kjør"), sg.Cancel("Exit")]]
window = sg.Window('Backup Runner v2.1')
如果您按照此链接访问文档: 您将看到,您可以使用内置的
time
模块告诉您现在的时间。您可以计算结束时间,然后等待:
import time
layout = ...
window = sg.Window('Backup Runner v2.1').Layout(layout)
end_time = time.time() + 60
while True: # Event Loop
event, values = window.Read(timeout=10)
# Your usual event handling ...
if time.time() > end_time:
break
您可以尝试使用时间模块:
import time
seconds = int(time.time()) # This is seconds since epoch
while True:
if int(time.time()) > seconds + 60: # True when seconds + 60 < current seconds
break # End of your loop
导入时间
seconds=int(time.time())#这是自epoch以来的秒数
尽管如此:
如果int(time.time())>seconds+60:#当seconds+60<当前秒时为True
打破你的循环
PySimpleGUI中最简单的方法是在调用window.Read()时设置超时值
此代码将等待用户输入60秒。如果未收到任何消息,则您将从Read
调用返回一个“Timeout Key”值
请注意,您不应该在while循环中调用Layout。这更像是您需要的:
while True: # Event Loop
event, values = window.Read(timeout=60*1000)
if event in (None, 'Exit'):
sys.exit("aa! errors!")
print("Skriptet ble stoppet")
if event == 'Kjør':
window.Close()
break
if event == sg.TIMEOUT_KEY:
break
您不应该在事件循环中调用window.Layout。它应该只被调用一次。在事件循环中,调用应该是window.Read(timeout=10)。您可以在对窗口本身的调用中指定布局。这是第二个参数。好的,在重新阅读文档(我根本不知道这个框架)之后,我将更新我的答案以表明这一点。
while True: # Event Loop
event, values = window.Read(timeout=60*1000)
if event in (None, 'Exit'):
sys.exit("aa! errors!")
print("Skriptet ble stoppet")
if event == 'Kjør':
window.Close()
break
if event == sg.TIMEOUT_KEY:
break