【Python项目】Tkinter之做个小闹钟

帮同学给他写的闹钟加了一个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()

程序到这里就结束了,写的也是非常的简陋,可能以后会完善吧,如果有大佬闲暇之余感兴趣完善了一下,希望能让我瞻仰瞻仰。

好了,散会

你可能感兴趣的:(Python,tkinter,gui,python)