深入了解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写的画图项目】本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- 深入理解Go之generate
- 我们重新了解付费。
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- C语言中的时间函数clock()和time()你都了解吗
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- 【1057快报】深入机关,走下田间,交通普法,共创文明
- Python基础|Python基础 - 练习1