简易画图工具(Python),供大家参考,具体内容如下
小黑最近在努力的入门python,正好学习到了Python的tkinker模块下的Canvas(画布)和Button(按钮)再加上相应的事务管理,实现了一个简单的画图小工具。
程序代码
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
101
102
|
#画图软件的实现 from tkinter.filedialog import * from tkinter import * from tkinter.colorchooser import * win_width = 900 win_height = 450 class Application(Frame): def __init__( self ,master = None ,bgcolor = "#000000" ): super ().__init__(master) self .master = master self .bgcolor = bgcolor self .x = 0 self .y = 0 self .fgcolor = "#ff0000" self .lastDraw = 0 #表示最后绘制的图形的id self .startDrawFlag = False self .pack() self .createWidget() def createWidget( self ): # 创建画板 self .drawCad = Canvas( self ,width = win_width,height = win_height * 0.9 ,bg = self .bgcolor) self .drawCad.pack() # 创建按钮 btn_start = Button( self ,text = "开始" ,name = "start" ) btn_start.pack(side = "left" ,padx = 10 ) btn_pen = Button( self , text = "画笔" , name = "pen" ) btn_pen.pack(side = "left" , padx = 10 ) btn_rect = Button( self , text = "矩形" , name = "rect" ) btn_rect.pack(side = "left" , padx = 10 ) btn_clear = Button( self , text = "清屏" , name = "clear" ) btn_clear.pack(side = "left" , padx = 10 ) btn_earsor = Button( self , text = "橡皮擦" , name = "earsor" ) btn_earsor.pack(side = "left" , padx = 10 ) btn_line = Button( self , text = "直线" , name = "line" ) btn_line.pack(side = "left" , padx = 10 ) btn_lineArrow = Button( self , text = "箭头直线" , name = "lineArrow" ) btn_lineArrow.pack(side = "left" , padx = 10 ) btn_color = Button( self , text = "颜色" , name = "color" ) btn_color.pack(side = "left" , padx = 10 ) #为按钮绑定事件 btn_pen.bind_class( "Button" , "<1>" , self .eventManger) self .drawCad.bind( "<ButtonRelease-1>" , self .stopDraw) def eventManger( self ,event): name = event.widget.winfo_name() print (name) if name = = "line" : self .drawCad.bind( "<B1-Motion>" , self .myline) elif name = = "lineArrow" : self .drawCad.bind( "<B1-Motion>" , self .mylineArrow) elif name = = "rect" : self .drawCad.bind( "<B1-Motion>" , self .myRect) elif name = = "pen" : self .drawCad.bind( "<B1-Motion>" , self .myPen) elif name = = "earsor" : self .drawCad.bind( "<B1-Motion>" , self .myEarsor) elif name = = "clear" : self .drawCad.delete( "all" ) elif name = = "color" : c = askcolor(color = self .fgcolor,title = "画笔选择颜色" ) self .fgcolor = c[ 1 ] def myline( self ,event): self .startDraw(event) self .lastDraw = self .drawCad.create_line( self .x, self .y,event.x,event.y,fill = self .fgcolor) def mylineArrow( self ,event): self .startDraw(event) self .lastDraw = self .drawCad.create_line( self .x, self .y, event.x, event.y,arrow = LAST , fill = self .fgcolor) def myRect( self ,event): self .startDraw(event) self .lastDraw = self .drawCad.create_rectangle( self .x, self .y, event.x, event.y, outline = self .fgcolor) def myPen( self ,event): self .startDraw(event) self .drawCad.create_rectangle( self .x, self .y, event.x, event.y, outline = self .fgcolor) self .x = event.x self .y = event.y def myEarsor( self ,event): self .startDraw(event) self .drawCad.create_rectangle(event.x - 4 , event.y - 4 , event.x + 4 , event.y + 4 , fill = self .bgcolor) self .x = event.x self .y = event.y def stopDraw( self ,event): self .startDrawFlag = False self .lastDraw = 0 def startDraw( self ,event): self .drawCad.delete( self .lastDraw) if not self .startDrawFlag: self .startDrawFlag = True self .x = event.x self .y = event.y root = Tk() app = Application(root) root.title( "简易的画图工具" ) root.geometry( str (win_width) + "x" + str (win_height) + "+100+100" ) root.mainloop() |
结果展示
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_43804570/article/details/108215102