一个时钟程序'

#  -*- coding: cp936 -*-
''' 一个时钟程序 '''
def  createAlarm(master):
    
'''  创建时间选择组件,包括小时、分钟、秒
    系统默认的时间设置为当前的事件
'''
    
import  time
    now 
=  time.localtime(time.time())
    lfAlarm 
=  LabelFrame(text  =   ' Add you alarm ' )
    master.vHour 
=  StringVar()
    master.vHour.set(now[
3 ])
    Label(lfAlarm,text 
=   ' Hour: ' ).grid(row  =  0,column  =  0)
    master.omHour 
=  apply(OptionMenu,(lfAlarm,master.vHour)  +  tuple(range(0, 24 )))
    master.omHour.grid(row 
=  0,column  =   1 )
    
    master.vMinute 
=  StringVar()
    master.vMinute.set(now[
4 ])
    Label(lfAlarm,text 
=   ' Minute: ' ).grid(row  =  0,column  =   2 )
    master.omMinute 
=  apply(OptionMenu,(lfAlarm,master.vMinute)  +  tuple(range(0, 60 )))
    master.omMinute.grid(row 
=  0,column  =   3 )

    master.vSecond 
=  StringVar()
    master.vSecond.set(now[
5 ])
    Label(lfAlarm,text 
=   ' Second: ' ).grid(row  =  0,column  =   4 )
    master.omSecond 
=  apply(OptionMenu,(lfAlarm,master.vSecond)  +  tuple(range(0, 60 )))
    master.omSecond.grid(row 
=  0,column  =   5 )

    lfAlarm.grid(row 
=   1 ,column  = 0,columnspan  =   6 )
def  addAlarm(master):
    
''' 将当前的设置添加为一个提醒
    设置最后一个为激活态
    选中最后一个
'''
    master.lbAlarm.insert(END,master.vHour.get() 
+   ' : '   +  master.vMinute.get()  +   ' : '   +  master.vSecond.get())
    master.lbAlarm.selection_clear(0,END)
    master.lbAlarm.selection_set(END)
    master.lbAlarm.activate(END)
def  deleteAlarm(master):
    
''' 删除一个提醒 '''
    master.lbAlarm.delete(ACTIVE)
    
if  master.lbAlarm.size()  >  0:
        master.lbAlarm.selection_set(ACTIVE)
def  modifyAlarm(master):
    
''' 修改提醒,
    删除原来的提醒,添加一个新的提醒,索引使用原来
'''
    t 
=  master.vHour.get()  +   ' : '   +  master.vMinute.get()  +   ' : '   +  master.vSecond.get()
    n 
=  master.lbAlarm.curselection()
    master.lbAlarm.delete(n)
    master.lbAlarm.insert(n,t)
    master.lbAlarm.selection_set(n)
    
def  createAlarmList(master):
    
''' 创建提醒列表,目前所有可用的提醒均显示在这里 '''
    master.lbAlarm 
=  Listbox(master)
    master.lbAlarm.grid(row 
=   3 ,column  =  0,
                 columnspan 
=   4 ,rowspan  =   3 ,
                 stick 
=  S  +  N  +  E  +  W)
def  createOperation(master):
    
''' 创建操作列表,对提醒列表中的提醒进行添加、修改或删除 '''
    Button(master,text 
=   ' Add alarm ' ,
           command 
=   lambda  arg  =  master:addAlarm(arg)
           ).grid(
               row 
=   3 ,column  =   4 ,
               columnspan 
=   2 ,
               stick 
=  S  +  N  +  E  +  W)
    Button(master,text 
=   ' Modify alarm ' ,
           command 
=   lambda  arg  =  master:modifyAlarm(arg)
           ).grid(
               row 
=   4 ,column  =   4 ,
               columnspan 
=   2 ,
               stick 
=  S  +  N  +  E  +  W)
    Button(master,text 
=   ' Delete alarm ' ,
           command 
=   lambda  arg  =  master:deleteAlarm(arg)
           ).grid(row 
=   5 ,column  =   4 ,
                  columnspan 
=   2 ,
                  stick 
=  S  +  N  +  E  +  W)
def  showCurrentTime(master):
    
''' 显示当前时间 '''
    lbCurrentTime 
=  Label(master,text  =   ' Current Time: ' )
    lbCurrentTime.grid(row 
=  0,column  =  0,
                       columnspan 
=   2 ,
                       stick 
=  W)
    master.vCurrentTime 
=  StringVar()
    master.etCurrentTime 
=  Entry(master,textvariable  =  master.vCurrentTime,state  =   ' readonly ' )
    master.etCurrentTime.grid(row 
=  0,column  =   2 ,
                       columnspan 
=   4 ,
                       stick 
=  S  +  N  +  E  +  W)
def  updateTime(master):
    
''' 时钟回调函数,用于更新当前时间;
    判断是否满足提醒条件
'''
    
import  time
    now 
=  time.localtime(time.time())
    t 
=   ' %d:%d:%d '   %  (now[ 3 ],now[ 4 ],now[ 5 ])
    master.vCurrentTime.set(t)
    
for  item  in  master.lbAlarm.get(0,END):
        
if  str(item)  ==  t:
            
#  如果当前时间与提醒列表中的一致,打印
             print   ' you have a alarm ' ,item
    root.after(
100 ,updateTime,master)
    
from  Tkinter  import   *
root 
=  Tk()
showCurrentTime(root)
createAlarm(root)
createAlarmList(root)
createOperation(root)
#  将检测周期设置为100ms
root.after( 100 ,updateTime,root)
root.mainloop()

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值