#
-*- 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()
本文介绍了一个简单的时钟程序设计,该程序允许用户设置提醒,并在指定时间触发提醒。程序使用Python编写,涉及时间处理、GUI界面设计等技术。

409

被折叠的 条评论
为什么被折叠?



