#
-*- 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()
''' 一个时钟程序 '''
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()