本文实例为大家分享了python交互式图形编程实例的第三部代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#时钟
from turtle import *
from datetime import *
def Skip(step):
penup()
forward(step)
pendown()
def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
reset()
Skip( - length * 0.1 )
begin_poly() #开始记录画笔坐标
forward(length * 1.1 ) #画笔向前移动length*1.1
end_poly() #结束记录画笔坐标
handForm = get_poly() #记录画笔起始和结束坐标位置(一个元组数据)
register_shape(name, handForm) #注册这个形状
def Init():
global secHand, minHand, hurHand, printer
mode( "logo" ) # 重置Turtle指向北
#建立三个表针Turtle并初始化
mkHand( "secHand" , 125 )
mkHand( "minHand" , 130 )
mkHand( "hurHand" , 90 )
secHand = Turtle()
secHand.shape( "secHand" )
minHand = Turtle()
minHand.shape( "minHand" )
hurHand = Turtle()
hurHand.shape( "hurHand" )
for hand in secHand, minHand, hurHand:
hand.shapesize( 1 , 1 , 3 )
hand.speed( 0 )
#建立输出文字Turtle
printer = Turtle()
printer.hideturtle() #隐藏画笔
printer.penup()
def SetupClock(radius):
#建立表的外框
reset()
pensize( 7 ) #画笔大小
for i in range ( 60 ):
Skip(radius) #画笔抬起,向前移动“radius”具体
if i % 5 = = 0 :
forward( 20 ) #如果能被5整除,就向前移动20
Skip( - radius - 20 ) #画笔再回退到原位置
else :
dot( 5 ) #画一个5个像素的点
Skip( - radius) #画笔再回退到原位置
right( 6 ) #每次循环向右移动6个弧度
def Week(t):
week = [ "星期一" , "星期二" , "星期三" ,
"星期四" , "星期五" , "星期六" , "星期日" ]
return week[t.weekday()] #返回当前是星期几
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d) #返回当前日期
def Tick():
#绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond * 0.000001 #精确到微秒
minute = t.minute + second / 60.0 #精确的秒
hour = t.hour + minute / 60.0 #精确到分钟
secHand.setheading( 6 * second) #秒针设定的角度 一圈360度,一圈60秒 360/60 = 6
minHand.setheading( 6 * minute) #分针设定的角度 一圈360度,一圈60分钟 360/60 = 6
hurHand.setheading( 30 * hour) #时针设定的角度 一圈360度,一圈12小时 360/12 = 30
tracer( False ) #取消动画,字直接打在画布上
printer.forward( 65 )
printer.write(Week(t), align = "center" ,
font = ( "Courier" , 14 , "bold" ))
printer.back( 130 )
printer.write(Date(t), align = "center" ,
font = ( "Courier" , 14 , "bold" ))
printer.home()
tracer( True ) #开启动画
ontimer(Tick, 100 ) #100ms后继续调用tick
def main():
tracer( False )
Init() #把表针画出来
SetupClock( 160 ) #把表盘画出来
tracer( True )
Tick() #让表针动起来,文字写上去
mainloop()
if __name__ = = "__main__" :
main()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#键盘值查询
from tkinter import *
root = Tk()
#创建一个框架,在这个框架中响应事件
frame = Frame(root,width = 256 ,height = 256 )
def callBack(event):
print (event.keysym)
frame.bind( "<KeyPress>" ,callBack)
frame.pack()
#当前框架被选中,意思是键盘触发,只对这个框架有效
frame.focus_set()
mainloop()
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/hayden1106/p/7851541.html