您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:深入了解python基于tkinter写的画图项目

51自学网 2022-02-21 10:45:54
  python
这篇教程深入了解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=master        self.x=0        self.y=0        self.pack()        self.bg=bg        self.fgcolor="#ff0000"        self.lastdraw=0        self.startdrawflag=False        self.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("<ButtonRelease-1>",self.stopDraw)        #绑定键盘快捷键        root.bind("<KeyPress-g>",self.kuaijiejian)        root.bind("<KeyPress-b>",self.kuaijiejian)    def eventManager(self,event):        name=event.widget.winfo_name()        print(name)        if name=='line':            self.drawpad.bind("<B1-Motion>",self.linecreate)        elif name=='lineraw':            self.drawpad.bind("<B1-Motion>",self.lineArrow)        elif name=="rect":            self.drawpad.bind("<B1-Motion>",self.rect)        elif name=="pen":            self.drawpad.bind("<B1-Motion>",self.pen)        elif name=='eraser':            self.drawpad.bind("<B1-Motion>",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=True            self.x=event.x            self.y=event.y    def stopDraw(self,event):        self.startdrawflag=False        self.lastdraw=0    def 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.x        self.y=event.y    def 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.x        self.y=event.y    def 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()

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注51zixue.net的更多内容!


python实现双人版坦克大战游戏
三分钟python搭建支付宝三方支付
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。