帮同学给他写的闹钟加了一个GUI界面,写到后面,几乎是推倒重来,还是学到一些东西,after循环怎么关闭始终是一个难题,当时我想的是用一个while循环,但是while循环一直都会崩溃,我也不是很清楚其原理,我个人觉得可能是循环的太多了导致程序崩溃,如果有大佬知道怎么中断after,可以私聊我,我每天都会上来瞅瞅,注释还是继承以往白话式,希望对诸位能有所帮助
import time
import os
import tkinter
import tkinter.messagebox
window=tkinter.Tk()
window.title('闹钟')
window.geometry('400x200+400+300')
#提取当前的时间,每秒刷新两次
def getting():
var.set(time.strftime("%Y-%m-%d %H:%M:%S")) #对当前时间进行格式化
window.after(500,getting)
#在主界面显示当前的时间
var=tkinter.StringVar()
lb=tkinter.Label(window,textvariable=var,font=('Arial',10),width=20)
lb.pack()
getting()
#标签文档
window_text=tkinter.Label(window,text='请输入需要提醒的时间',font=('Arail',10))
window_text.place(x=130,y=50)
window_symbol=tkinter.Label(window,text=':',font=('Arail',15))
window_symbol.place(x=190,y=80)
#取出输入的小时数
hour_var=tkinter.StringVar()
window_hour=tkinter.Entry(window,textvariable=hour_var,width=5,show=None)
window_hour.place(x=150,y=82)
#取出输入的分钟数
minute_var=tkinter.StringVar()
window_minute=tkinter.Entry(window,textvariable=minute_var,width=5,show=None)
window_minute.place(x=210,y=82)
#主要判断函数,文首说的问题就在此函数中
def estimate():
hour=hour_var.get()
minute=minute_var.get()
if hour == '':
tkinter.messagebox.showerror(title='子轩闹钟',message='小时不允许为空') #报错弹窗
elif minute == '':
tkinter.messagebox.showerror(title='子轩闹钟',message='分钟数不允许为空')
else:
def estimate1():
tkinter.messagebox.showinfo(title='子轩闹钟',message='已为您成功定时') #通知弹窗
window.after(1000,estimate1)
if ((hour) == (time.strftime('%H'))) and ((minute) == (time.strftime("%M"))): #这个判断是有点憨,见谅
os.system('卡农.mp3') #我最喜欢的钢琴曲
window.destroy() #实在是不知道怎么中断after,被逼无奈出此下策
estimate1()
#给个按钮
window_button=tkinter.Button(window,text='定时',width=9,command=estimate)
window_button.place(x=160,y=120)
#主界面循环
window.mainloop()
程序到这里就结束了,写的也是非常的简陋,可能以后会完善吧,如果有大佬闲暇之余感兴趣完善了一下,希望能让我瞻仰瞻仰。
好了,散会