【发布时间】:2020-05-26 10:07:27
【问题描述】:
import PySimpleGUI as sg
import time
q1 = [
[sg.Text("Question 1!"), sg.Button("x", visible=False), sg.Text("Time:"), sg.Text(" ", size=(10,1), key="t")],
[sg.Text("This is where question 1 will be?")],
[sg.Button("Option 1", key="1",button_color=("#ffffff","#151515")), sg.Button("Option 2", key="2",button_color=("#00ff00", "#151515"))],
[sg.Button("Option 3", key="3",button_color=("#00ffff", "#151515")), sg.Button("Option 4", key="4",button_color=("#ff00ff", "#151515"))],
[sg.Button("Submit"), sg.Button("Next Question"), sg.Button("Skip")]
]
window = sg.Window("Question 1",q1)
while True:
event, values = window.Read()
if event is None:
break
seconds = 20
for i in range(seconds):
seconds = seconds - i
window.FindElement("t").Update(seconds)
time.sleep(1)
我不确定我是否以正确的方式处理此问题,但我想在右上角显示一个 20 秒计时器。但是,使用上面的代码,没有计时器启动,当您按下按钮时,它会冻结程序 20 秒。
【问题讨论】:
-
您是否只是在使用计时器向用户显示还剩多少时间,以及当它达到零时您想退出?
-
@DJSchaffner 是的,这个想法是,如果时间到 0 并且他们没有回答,它将跳到下一个问题。但是,我还想保留每个问题所花费的时间,以便我可以显示完成测验所用的时间
-
我现在想到的 2 个选项是 A)在不同的线程中运行你的计时器,因此它仍然倒计时但不会阻塞主循环或 B)使用来自 @987654323 的
time方法@ 包裹。然后手动计算你的计时器。我将继续发布选项 B) 的答案 -
我添加了一个关于如何做计时器的答案。至于更新窗口中的计时器:我自己没有尝试过,但似乎你应该这样做
window['mykey'].update(textVar)
标签: python pysimplegui