本文实例为大家分享了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