深入了解python基于tkinter写的画图项目

目录

  • 总结
# coding=utf-8from tkinter import *from tkinter.filedialog import *from tkinter.colorchooser import *win_width=900#定义全局变量win_height=450#定义全局变量class AppLication(Frame):#初始化区def __init__(self,master=None,bg="#000000"):super().__init__(master)self.master=masterself.x=0self.y=0self.pack()self.bg=bgself.fgcolor="#ff0000"self.lastdraw=0self.startdrawflag=Falseself.CreateWidget()#创建控件def CreateWidget(self):#创建画布self.drawpad=Canvas(root,bg=self.bg,width=win_width,height=win_height)self.drawpad.pack()#创建按钮btnstart=Button(root,text="开始",name='start')btnstart.pack(side="left",padx=10)btnpen=Button(root,text="画笔",name='pen')btnpen.pack(side="left",padx=10)btnrect=Button(root,text="画矩形",name='rect')btnrect.pack(side="left",padx=10)btnclear=Button(root,text="清屏",name='clear')btnclear.pack(side="left",padx=10)btneraser=Button(root,text="橡皮擦",name='eraser')btneraser.pack(side="left",padx=10)btnline=Button(root,text="直线",name='line')btnline.pack(side="left",padx=10)btnlineraw=Button(root,text="直线(箭头)",name='lineraw')btnlineraw.pack(side="left",padx=10)btncolor=Button(root,text="颜色",name='color')btncolor.pack(side="left",padx=10)#绑定事件处理btnpen.bind_class("Button","<1>",self.eventManager)self.drawpad.bind("",self.stopDraw)#绑定键盘快捷键root.bind("",self.kuaijiejian)root.bind("",self.kuaijiejian)def eventManager(self,event):name=event.widget.winfo_name()print(name)if name=='line':self.drawpad.bind("",self.linecreate)elif name=='lineraw':self.drawpad.bind("",self.lineArrow)elif name=="rect":self.drawpad.bind("",self.rect)elif name=="pen":self.drawpad.bind("",self.pen)elif name=='eraser':self.drawpad.bind("",self.eraser)elif name=='clear':self.drawpad.delete("all")elif name=='color':s1=askcolor(title="选择颜色",color=self.fgcolor)self.fgcolor=s1[1]def startDraw(self,event):self.drawpad.delete(self.lastdraw)if not self.startdrawflag:self.startdrawflag=Trueself.x=event.xself.y=event.ydef stopDraw(self,event):self.startdrawflag=Falseself.lastdraw=0def linecreate(self,event):self.startDraw(event)self.lastdraw=self.drawpad.create_line(self.x,self.y,event.x,event.y,fill=self.fgcolor)def lineArrow(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 rect(self,event):self.startDraw(event)self.lastdraw=self.drawpad.create_rectangle(self.x,self.y,event.x,event.y,outline=self.fgcolor)def pen(self,event):self.startDraw(event)self.lastdraw=self.drawpad.create_line(self.x,self.y,event.x,event.y,fill=self.fgcolor)self.x=event.xself.y=event.ydef eraser(self,event):self.startDraw(event)self.drawpad.create_rectangle(self.x-4,self.y-4,event.x+4,event.y+4,fill=self.bg)self.x=event.xself.y=event.ydef kuaijiejian(self,event):#设置按钮快捷键#运行区if __name__=='__main__':root=Tk()root.geometry(str(win_width)+"x"+str(win_height+100)+"+100+100")root.title("画图软件")app=AppLication(master=root)root.mainloop()


总结
【深入了解python基于tkinter写的画图项目】本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

    推荐阅读