数学游戏Tkinter中的Python计时器

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()

tus*_*r08 5

我认为您需要的是这个。

从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中实现了基本计时器。