我是靠谱客的博主 结实酸奶,这篇文章主要介绍GUI----简易画图项目,现在分享给大家,希望可以做个参考。

简易画图

复制代码
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
""" 开发画图软件 """ # -*- coding:utf-8 -*- from tkinter import * from tkinter.colorchooser import * from tkinter.filedialog import * from tkinter.messagebox 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 self.startDrawFlag = False self.pack() self.createWidget() def createWidget(self): # 创建绘图区 self.drawpad = Canvas(root, width=win_width, height=win_height*0.9, bg=self.bgcolor) self.drawpad.pack() btn_start = Button(root, text="开始", name="start") btn_start.pack(side='left', padx=10) btn_pen = Button(root, text="画笔", name="pen") btn_pen.pack(side='left',padx=10) btn_rect = Button(root, text="矩形", name="rect") btn_rect.pack(side='left',padx=10) btn_clear = Button(root, text="清屏", name="clear") btn_clear.pack(side='left',padx=10) btn_earsor = Button(root, text="橡皮擦", name="earsor") btn_earsor.pack(side='left',padx=10) btn_line = Button(root, text="直线", name="line") btn_line.pack(side='left',padx=10) btn_lineArrow = Button(root, text="箭头直线", name="lineArrow") btn_lineArrow.pack(side='left',padx=10) btn_color = Button(root, text="颜色", name="color") btn_color.pack(side='left',padx=10) # 事件处理 btn_rect.bind_class("Button", "<1>", self.eventManager) self.drawpad.bind("<ButtonRelease-1>", self.stopDraw) # 增加颜色切换的快捷键 root.bind("<KeyPress-r>", self.kuaijiejian) root.bind("<KeyPress-g>", self.kuaijiejian) root.bind("<KeyPress-y>", self.kuaijiejian) def eventManager(self, event): name = event.widget.winfo_name() print(name) if name == "line": self.drawpad.bind("<B1-Motion>", self.myline) elif name == "lineArrow": self.drawpad.bind("<B1-Motion>", self.mylineArrow) elif name == "rect": self.drawpad.bind("<B1-Motion>", self.myRect) elif name == "pen": self.drawpad.bind("<B1-Motion>", self.myPen) elif name == "earsor": self.drawpad.bind("<B1-Motion>", self.myErasor) elif name == "clear": self.drawpad.delete("all") elif name == "color": c = askcolor(color=self.fgcolor, title="选择画笔颜色") # [(255,0,0),"#ff0000"] self.fgcolor = c[1] def stopDraw(self, event): self.startDrawFlag = False self.lastDraw = 0 def startDraw(self,event): self.drawpad.delete(self.lastDraw) if not self.startDrawFlag: self.startDrawFlag = True self.x = event.x self.y = event.y def myline(self, event): self.startDraw(event) self.lastDraw= self.drawpad.create_line(self.x,self.y,event.x,event.y, fill=self.fgcolor) def mylineArrow(self, event): self.startDraw(event) self.lastDraw =self.drawpad.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.drawpad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor) def myPen(self, event): self.startDraw(event) self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor) self.x = event.x self.y = event.y def myErasor(self, event): self.startDraw(event) self.drawpad.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 kuaijiejian(self, event): if event.char == "r": self.fgcolor = "#ff0000" elif event.char == "g": self.fgcolor = "#00ff00" elif event.char == "y": self.fgcolor = "#ffff00" if __name__ == '__main__': root = Tk();root.geometry(str(win_width)+"x"+str(win_height)+"+200+300") root.title("Mr_huang的简易画图板") app = Application(master=root) root.mainloop()

最后

以上就是结实酸奶最近收集整理的关于GUI----简易画图项目的全部内容,更多相关GUI----简易画图项目内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部