600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python学习篇16-GUI图形用户界面编程-简易画图软件开发

Python学习篇16-GUI图形用户界面编程-简易画图软件开发

时间:2019-08-11 04:59:41

相关推荐

Python学习篇16-GUI图形用户界面编程-简易画图软件开发

如果对您有一丁点帮助,劳烦动动手指点个赞,支持和鼓励是搬砖人不断创作的动力!

【项目】简易画图软件开发,还需完善

开发一款简单的画图软件, 包含如下功能:

画笔矩形/椭圆绘制清屏橡皮擦直线/带箭头的直线修改画笔颜色、背景颜色

"""开发画图软件的菜单 """from tkinter.filedialog import *from tkinter.colorchooser import *# 窗口的宽度和高度win_width = 900win_height = 450class Application(Frame):def __init__(self, master=None, bgcolor="#000000"):super().__init__(master) self.master = masterself.bgcolor = bgcolorself.x = 0self.y = 0self.fgcolor = "#ff0000" self.lastDraw = 0 # 表示最后绘制的图形的idself.startDrawFlag = Falseself.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_erasor = Button(root, text="橡皮擦", name="erasor")btn_erasor.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_pen.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 == "erasor":self.drawpad.bind("<B1-Motion>", self.myErasor)elif name == "clear":self.drawpad.delete("all")elif name == "color":c = askcolor(color=self.fgcolor, title="选择画笔颜色")self.fgcolor = c[1]def stopDraw(self, event):self.startDrawFlag = Falseself.lastDraw = 0def startDraw(self, event):self.drawpad.delete(self.lastDraw)if not self.startDrawFlag:self.startDrawFlag = Trueself.x = event.xself.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("简易画图软件")app = Application(master=root)root.mainloop()

效果图:

欢迎扫描微信添加,技术交流+资源分享

ID: Txtechcom

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。