import sys
import time
from tkinter import *
from tkinter import messagebox
Gui = Tk()
Gui.title("Exercise Timer")
def jesse(derp):
x=derp
test = 0
while x>=0 and x<=derp:
if test == 0:
Gui.after(1000,makeLabel(x))
x= x-1
if x==0:
test = 1
if test == 1:
if x == 0:
Gui.after(1000,makeLabel("brk pls"))
x=x+1
else:
Gui.after(1000,makeLabel(x))
x=x+1
def makeLabel(texts):
Gui.update()
newlab = Label(text=texts).pack()
def stop():
Gui.destroy()
mbutton = Button(text="10 seconds",command = lambda: jesse(10)).pack()
mbutton = Button(text="20 seconds",command = lambda: jesse(20)).pack()
mbutton = Button(text="30 seconds",command = lambda: jesse(30)).pack()
mbutton = Button(text="quit",fg="red",command = lambda: stop()).pack()
Gui.mainloop()
sys.exit()
很抱歉,如果这是一个愚蠢的问题,我刚刚开始使用Python。基本上我的程序是从一个数字倒计时,然后计数每1秒显示下一个数字。这一切都很好,除了我去关闭它。它会关闭,但是jesse()函数会继续运行,并且在出现错误后会弹出一个窗口,其中只显示下一个数字,即使我已单击退出按钮或Windows x按钮。
答案 0 :(得分:0)
“
import sys
import time
from Tkinter import *
import tkMessageBox
Gui = Tk()
Gui.title("Exercise Timer")
def jesse(derp):
x=derp
test = 0
while x>=0 and x<=derp:
if test == 0:
Gui.after(1000,makeLabel(x))
x= x-1
if x==0:
test = 1
if test == 1:
if x == 0:
Gui.after(1000,makeLabel("brk pls"))
x=x+1
else:
Gui.after(1000,makeLabel(x))
x=x+1
def makeLabel(texts):
try:
Gui.update()
newlab = Label(text=texts).pack()
except TclError:
pass
def stop():
Gui.destroy()
mbutton = Button(text="10 seconds",command = lambda: jesse(10)).pack()
mbutton = Button(text="20 seconds",command = lambda: jesse(20)).pack()
mbutton = Button(text="30 seconds",command = lambda: jesse(30)).pack()
mbutton = Button(text="quit",fg="red",command = lambda: stop()).pack()
Gui.mainloop()
sys.exit()
“
我添加了一个try和except块,以便它停止发出错误,我知道它不是一个非常整洁的修复,但我不清楚为什么你的代码甚至会出错。 我希望这有助于对不起,如果它没有