一个时钟程序'

# -*- 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()

 
阅读更多

没有更多推荐了,返回首页