Ste*_*her 4 python user-interface tkinter timer python-2.7
我想为我的简单数学游戏添加一个计时器。到目前为止,一切正常,用户在按下按钮时会提出问题,并获得有关答案的反馈。我想为用户添加一个计时器,以查看响应乘法所需的时间。这是本数学游戏原型的最后一部分。我希望计时器在用户单击“ nytt tal”(表示瑞典的新数字)时启动,并在用户单击“ svar”(表示瑞典语的答案)时停止。这是我的代码。
从Tkinter进口*
导入tkMessageBox
随机导入
导入时间
导入系统
#定义给用户的问题
def fraga1():
全局num3
num3 = random.randint(1,10)
全局num4
num4 = random.randint(1,10)
全局svar1
svar1 = num3 * num4
label1.config(text ='Vad blir'+ str(num3)+'*'+ str(num4)+'?')
entry1.focus_set()
#根据答案给出答案的答案
def svar1():
mainAnswer = entry1.get()
如果len(mainAnswer)== 0:
tkMessageBox.showwarning(message ='Skriv innågranummer!')
返回
如果int(mainAnswer)!= svar1:
tkMessageBox.showwarning(message ='Tyvärrdeträttasvaret:'+ str(svar1))
其他:
tkMessageBox.showinfo(message ='RÄTT!! :)')
#退出按钮定义
def quit():
全球根
root.destroy()
#此部分计时器的定义无效
def start():
全局count_flag
fraga1()
count_flag = True
计数= 0.0
而True:
如果count_flag == False:
打破
label ['text'] = str(count)
time.sleep(0.1)
root.update()
计数+ = 0.1
#窗口代码
根= Tk()
root.title(“多重标记”)
root.geometry('800x500')
count_flag = True
#标签中的欢迎消息
label2 = Label(root,text =“ Hej!\ n Nu ska vilösalite matteproblem!”)
label2.config(font =('times',18,'bold'),fg ='black',bg ='white')
label2.grid(row = 0,column = 0)
#说明如何在标签中播放
label3 = Label(root,text =“ Instruktioner!\ n从头开始尝试一下nyttspel”)
label3.config(font =('times',12,'bold'),fg ='black',bg ='white')
label3.grid(第2行,第2列)
#其他标签
label1 =标签(根)
label1.grid(row = 2,column = 0)
#开始按钮的输入小部件
entry1 =条目(根)
entry1.grid(第3行,第0列)
#restart提出了一个新问题
entry1.bind('',func = lambda e:checkAnswer())
#纽扣
fragaBtn =按钮(root,text ='Nytt tal',command = fraga1)
fragaBtn.grid(第4行,第0列)
svarButton =按钮(root,text ='Svar',command = svar1)
svarButton.grid(第4行,第1列)
quit_bttn =按钮(root,text =“ Avsluta”,command = quit)
quit_bttn.grid(第5行,第0列)
root.mainloop()
我认为您需要的是这个。
从Tkinter进口*
导入时间
StopWatch(Frame)类:
“”“实现秒表框架小部件。”“”
def __init __(self,parent = None,** kw):
Frame .__ init __(self,parent,kw)
self._start = 0.0
self._elapsedtime = 0.0
self._running = 0
self.timestr = StringVar()
self.makeWidgets()
def makeWidgets():
“”“制作时间标签。”“”
l =标签(self,textvariable = self.timestr)
self._setTime(self._elapsedtime)
l.pack(fill = X,expand = NO,pady = 2,padx = 2)
def _update(self):
“”“用经过的时间更新标签。”“”
self._elapsedtime = time.time()-self._start
self._setTime(self._elapsedtime)
self._timer = self.after(50,self._update)
def _setTime(self,elap):
“”“将时间字符串设置为Minutes:Seconds:Hundreths”“”
分钟= int(elap / 60)
秒=整数(elap-分钟* 60.0)
hseconds = int((elap-分钟* 60.0-秒)* 100)
self.timestr.set('%02d:%02d:%02d'%(分钟,秒,小时))
def开始(自己):
“”“启动秒表,忽略是否正在运行。”“”
如果不是self._running:
self._start = time.time()-self._elapsedtime
self._update()
self._running = 1
def Stop(自己):
“”“停止秒表,如果停止则忽略它。”“”
如果是self__running:
self.after_cancel(self._timer)
self._elapsedtime = time.time()-self._start
self._setTime(self._elapsedtime)
self._running = 0
def重置(自己):
“”“重置秒表。”“”
self._start = time.time()
self._elapsedtime = 0.0
self._setTime(self._elapsedtime)
def main():
根= Tk()
sw =秒表(根)
sw.pack(侧面=顶部)
按钮(root,text ='Start',command = sw.Start).pack(side = LEFT)
按钮(root,text ='Stop',command = sw.Stop).pack(side = LEFT)
按钮(root,text ='Reset',command = sw.Reset).pack(side = LEFT)
按钮(root,text ='Quit',command = root.quit).pack(side = LEFT)
root.mainloop()
如果__name__ =='__main__':
主要()
PS:适合您的代码我刚刚在tkinter中实现了基本计时器。