我想为我的简单数学游戏添加一个计时器。到目前为止,一切都很好,用户在按下按钮时会收到问题,并得到答案的反馈。我想给用户添加一个定时器,让用户看看回答乘法需要多少时间。这是我这个数学游戏原型的最后一部分。我希望定时器在用户点击“NYTT TAL”(瑞典语中的新数字)时启动,在用户点击“SVAR”(瑞典语中的应答)时停止。这是我的密码。
from Tkinter import * import tkMessageBox import random import time import sys # Definition for the question asked to user def fraga1(): global num3 num3 = random.randint(1, 10) global num4 num4 = random.randint(1, 10) global svar1 svar1 = num3 * num4 label1.config(text='Vad blir ' + str(num3) + '*' + str(num4) + '?') entry1.focus_set() #The answer giving feedback based on answer def svar1(): mainAnswer = entry1.get() if len(mainAnswer) == 0: tkMessageBox.showwarning(message='Skriv in några nummer!') return if int(mainAnswer) != svar1: tkMessageBox.showwarning(message='Tyvärr det rätta svaret: ' + str(svar1)) else: tkMessageBox.showinfo(message='RÄTT!! :)') #The quit button definition def quit(): global root root.destroy() #Definition for the timer this part doesnt work def start(): global count_flag fraga1() count_flag = True count = 0.0 while True: if count_flag == False: break label['text'] = str(count) time.sleep(0.1) root.update() count += 0.1 #Window code root = Tk() root.title("multiplikations tidtagning") root.geometry('800x500') count_flag = True # Welcome message in labels label2 = Label(root, text="Hej!\n Nu ska vi lösa lite matteproblem!") label2.config(font=('times', 18, 'bold'), fg='black', bg='white') label2.grid(row=0, column=0) #Instructions how to play in labels label3 = Label(root, text="Instruktioner!\n För att starta ett spel tryck på nyttspel") label3.config(font=('times', 12, 'bold'), fg='black', bg='white') label3.grid(row=2, column=2) #other label label1 = Label(root) label1.grid(row=2, column=0) # entry widget for the start button entry1 = Entry(root) entry1.grid(row=3, column=0) # restart gives a new question entry1.bind('', func=lambda e:checkAnswer()) #Buttons fragaBtn = Button(root, text='Nytt tal', command=fraga1) fragaBtn.grid(row=4, column=0) svarButton = Button(root, text='Svar', command=svar1) svarButton.grid(row=4, column=1) quit_bttn = Button(root, text = "Avsluta", command=quit) quit_bttn.grid(row=5, column=0) root.mainloop()
我可以建议使用线程的其他解决方案。
我在一个项目中有一个小计时器,它作为一个不同的线程运行,每秒更新一次:
import threading
import tkinter as tk
import time
root = tk.Tk()
timer = tk.Text(root, width=5, height=1)
timer.insert(tk.INSERT, "00:00")
timer.pack()
def show_time():
start = time.time()
seconds = 0
while True:
if time.time() - start > 1:
seconds += int(time.time() - start)
start = time.time()
cur_index = timer.index(tk.INSERT)
cur_index = str(int(cur_index[0]) - 1) + cur_index[1:]
timer.delete(cur_index, tk.INSERT)
timer.insert(tk.INSERT, str(int(seconds / 60)) + ":" + str(seconds % 60))
root.update()
thread = threading.Thread(target=show_time)
thread.start()
使用一个全局变量来存储人员按“开始”时的当前时间。然后,当用户在函数svar中按svar时,只需获取当前时间,将它们彼此相减,就得到了所需的时间,然后将全局var重置为0,这样就得到了所需的时间
我想你需要的是这个。
from Tkinter import * import time class StopWatch(Frame): """ Implements a stop watch frame widget. """ 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(self): """ Make the time label. """ l = Label(self, textvariable=self.timestr) self._setTime(self._elapsedtime) l.pack(fill=X, expand=NO, pady=2, padx=2) def _update(self): """ Update the label with elapsed time. """ self._elapsedtime = time.time() - self._start self._setTime(self._elapsedtime) self._timer = self.after(50, self._update) def _setTime(self, elap): """ Set the time string to Minutes:Seconds:Hundreths """ minutes = int(elap/60) seconds = int(elap - minutes*60.0) hseconds = int((elap - minutes*60.0 - seconds)*100) self.timestr.set('%02d:%02d:%02d' % (minutes, seconds, hseconds)) def Start(self): """ Start the stopwatch, ignore if running. """ if not self._running: self._start = time.time() - self._elapsedtime self._update() self._running = 1 def Stop(self): """ Stop the stopwatch, ignore if stopped. """ if self._running: self.after_cancel(self._timer) self._elapsedtime = time.time() - self._start self._setTime(self._elapsedtime) self._running = 0 def Reset(self): """ Reset the stopwatch. """ self._start = time.time() self._elapsedtime = 0.0 self._setTime(self._elapsedtime) def main(): root = Tk() sw = StopWatch(root) sw.pack(side=TOP) Button(root, text='Start', command=sw.Start).pack(side=LEFT) Button(root, text='Stop', command=sw.Stop).pack(side=LEFT) Button(root, text='Reset', command=sw.Reset).pack(side=LEFT) Button(root, text='Quit', command=root.quit).pack(side=LEFT) root.mainloop() if __name__ == '__main__': main()
注:我刚刚在Tkinter中实现了基本的计时器。
问题内容: 我已经用Java创建了一个游戏,现在我只需要添加一个允许用户在60岁以下玩的计时器。我已经在互联网上进行搜索,找到了swing和util软件包的计时器。您能给我一种方法在我的游戏中使用它吗? 问题答案: 如果您想进行交互,可以使用和类: 因此,现在您有了一个计时器,可以触发另一个类的调用。现在,您可以安排它:
现在我正忙着为我的项目制作图形用户界面。它也需要一个由时间驱动的测试。然而当我按下开始按钮时,计数器开始计数,但是图形用户界面冻结了,所以你不能按下停止按钮。最终程序停止并关闭了它的自我。 看看我的代码: 我将通过我节目的这一部分向大家介绍: 导入用于此目的的库 给我们的while变量timeLoop一个错误的状态 给我们的变量赋值 下面是我们的Def循环用于通过GUI中的窗口移动用于在按下Sto
我对编程游戏相当陌生;我已经3/4完成了,我有一个关于我制作的一个基于文本的小游戏的问题。。。所以在这个游戏中,我的
我的程序应该要求用户猜测 0 到 100 之间的数字,但我似乎无法正确输出。目前,如果用户数大于随机数,它会打印出无限数量的“您的数字太高”。此外,如果第一个 UserGuess 很低,那么以下所有数字都将具有相同的提示:(“您的数字太低”),尽管它们实际上大于随机数。我不知道我做错了什么。任何帮助将不胜感激。谢谢!
最后,是否可以重复使用相同的runnable(每个游戏会话1个),而不是每回合创建一个新的。
本文向大家介绍Python编程中的Hangman游戏,包括了Python编程中的Hangman游戏的使用技巧和注意事项,需要的朋友参考一下 man子手是计算机上的著名游戏,它基本上将计算机生成的单词与您猜到的单词匹配。如果有比赛,您会得到奖励,否则游戏会继续要求新的输入。 在下面的游戏中,用户首先必须输入他们的姓名,然后要求其猜测任何字母。如果随机单词包含该字母,它将以正确的位置显示为输出,否则程