import time import tkinter as tk #将秒值转化是时分 w = tk.Tk() w.geometry('400x400+400+200') w.resizable(0, 0) times = 0 def getData(): global times times=0 times = int(entry.get())*60 print(times) w.after(1000,show) tLab = tk.Label(w,text = "0",font=("黑体",60)) tLab.place(x=100,y=100) def show(): global times fen = times//60 miao = times%60 if miao<10: showTime = str(fen)+":0"+str(miao) else: showTime = str(fen)+":"+str(miao) tLab.config(text = showTime) tLab.text = showTime times = int(times)-1 if int(times)>=0: w.after(1000,show) entry = tk.Entry(w,width=20) entry.place(x=100,y=50) but = tk.Button(w,text = "ENTER",command = getData) but.place(x = 250,y=45) w.mainloop()更改代码实现重复点击开始倒计时的效果
时间: 2024-01-12 09:04:30 浏览: 67
【tkinter模块04】多选框控件
以下是修改后的代码,可以实现重复点击开始倒计时的效果:
``` python
import time
import tkinter as tk
# 定义全局变量
times = 0
timer = None
def get_time():
"""获取用户输入的时间,并将其转换为秒"""
global times, timer
try:
# 获取用户输入的时间,将其转换为秒
times = int(entry.get()) * time_unit.get()
print(times)
# 如果之前有倒计时,先停止之前的倒计时
if timer:
w.after_cancel(timer)
# 开始倒计时
timer = w.after(1000, show_time)
except ValueError:
# 如果用户输入的不是数字,给出提示
tk.messagebox.showerror("错误", "请输入数字")
def show_time():
"""将时间转换为时分秒的格式,并显示在界面上"""
global times, timer
fen = times // 60
miao = times % 60
if miao < 10:
show_time = str(fen) + ":0" + str(miao)
else:
show_time = str(fen) + ":" + str(miao)
# 更新时间标签的文本
time_label.config(text=show_time)
time_label.text = show_time
times = int(times) - 1
if int(times) >= 0:
# 继续倒计时
timer = w.after(1000, show_time)
# 创建主窗口
w = tk.Tk()
w.geometry('400x400+400+200')
w.resizable(0, 0)
w.title("倒计时程序")
# 添加控件
time_label = tk.Label(w, text="0", font=("黑体", 60))
time_label.place(x=100, y=100)
entry = tk.Entry(w, width=20)
entry.place(x=100, y=50)
time_unit = tk.IntVar()
time_unit.set(60)
rb1 = tk.Radiobutton(w, text="分钟", variable=time_unit, value=60)
rb1.place(x=150, y=150)
rb2 = tk.Radiobutton(w, text="秒", variable=time_unit, value=1)
rb2.place(x=150, y=180)
enter_button = tk.Button(w, text="开始倒计时", command=get_time)
enter_button.place(x=250, y=45)
# 启动主循环
w.mainloop()
```
在代码中,我们新增了一个timer变量来保存倒计时的计时器。在开始新的倒计时之前,我们先检查timer变量是否存在,如果存在则使用after_cancel方法停止之前的倒计时。然后,我们再使用after方法启动新的倒计时,并将返回值保存到timer变量中,以便在需要时停止倒计时。
这样,当用户多次点击开始倒计时按钮时,程序会自动停止之前的倒计时并开始新的倒计时,以实现重复点击开始倒计时的效果。
阅读全文