python实现画图工具


Posted in Python onAugust 27, 2020

简易画图工具(Python),供大家参考,具体内容如下

小黑最近在努力的入门python,正好学习到了Python的tkinker模块下的Canvas(画布)和Button(按钮)再加上相应的事务管理,实现了一个简单的画图小工具。

程序代码

#画图软件的实现
from tkinter.filedialog import *
from tkinter import *
from tkinter.colorchooser 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 #表示最后绘制的图形的id
    self.startDrawFlag=False
    self.pack()
    self.createWidget()
def createWidget(self):
  # 创建画板
  self.drawCad=Canvas(self,width=win_width,height=win_height*0.9,bg=self.bgcolor)
  self.drawCad.pack()
  # 创建按钮
  btn_start = Button(self,text="开始",name="start")
  btn_start.pack(side="left",padx=10)
  btn_pen = Button(self, text="画笔", name="pen")
  btn_pen.pack(side="left", padx=10)
  btn_rect = Button(self, text="矩形", name="rect")
  btn_rect.pack(side="left", padx=10)
  btn_clear = Button(self, text="清屏", name="clear")
  btn_clear.pack(side="left", padx=10)
  btn_earsor = Button(self, text="橡皮擦", name="earsor")
  btn_earsor.pack(side="left", padx=10)
  btn_line = Button(self, text="直线", name="line")
  btn_line.pack(side="left", padx=10)
  btn_lineArrow = Button(self, text="箭头直线", name="lineArrow")
  btn_lineArrow.pack(side="left", padx=10)
   btn_color = Button(self, text="颜色", name="color")
  btn_color.pack(side="left", padx=10)
  #为按钮绑定事件
  btn_pen.bind_class("Button","<1>",self.eventManger)
  self.drawCad.bind("<ButtonRelease-1>",self.stopDraw)
def eventManger(self,event):
  name=event.widget.winfo_name()
  print(name)
  if name=="line" :
    self.drawCad.bind("<B1-Motion>",self.myline)
  elif name=="lineArrow":
    self.drawCad.bind("<B1-Motion>", self.mylineArrow)
  elif name=="rect":
    self.drawCad.bind("<B1-Motion>", self.myRect)
  elif name=="pen":
    self.drawCad.bind("<B1-Motion>", self.myPen)
  elif name=="earsor":
    self.drawCad.bind("<B1-Motion>", self.myEarsor)
  elif name=="clear":
    self.drawCad.delete("all")
  elif name=="color":
   c= askcolor(color=self.fgcolor,title="画笔选择颜色")
    self.fgcolor=c[1]

def myline(self,event):
  self.startDraw(event)
  self.lastDraw=self.drawCad.create_line(self.x,self.y,event.x,event.y,fill=self.fgcolor)

def mylineArrow(self,event):
  self.startDraw(event)
  self.lastDraw = self.drawCad.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.drawCad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)

def myPen(self,event):
  self.startDraw(event)
  self.drawCad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)
  self.x=event.x
  self.y=event.y
def myEarsor(self,event):
  self.startDraw(event)
  self.drawCad.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 stopDraw(self,event):
  self.startDrawFlag=False
  self.lastDraw=0

def startDraw(self,event):
  self.drawCad.delete(self.lastDraw)
  if not self.startDrawFlag:
    self.startDrawFlag = True
    self.x = event.x
    self.y = event.y
root=Tk()
app=Application(root)
root.title("简易的画图工具")
root.geometry(str(win_width)+"x"+str(win_height)+"+100+100")
root.mainloop()

结果展示

python实现画图工具

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python代码做configure文件
Jul 20 Python
Python随机数random模块使用指南
Sep 09 Python
详解python单元测试框架unittest
Jul 02 Python
python查看列的唯一值方法
Jul 17 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
对python:print打印时加u的含义详解
Dec 15 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
python 实现兔子生兔子示例
Nov 21 Python
记录模型训练时loss值的变化情况
Jun 16 Python
Python装饰器结合递归原理解析
Jul 02 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 #Python
基于python实现操作redis及消息队列
Aug 27 #Python
Python3如何在服务器打印资产信息
Aug 27 #Python
python 8种必备的gui库
Aug 27 #Python
Django静态文件加载失败解决方案
Aug 26 #Python
Python趣味入门教程之循环语句while
Aug 26 #Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 #Python
You might like
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
nodejs基础应用
2017/02/03 NodeJs
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
毕业生就业自荐信
2013/12/04 职场文书
实用求职信范文分享
2013/12/25 职场文书
医院门卫岗位职责
2013/12/30 职场文书
平安建设实施方案
2014/03/19 职场文书
学习型班组申报材料
2014/05/31 职场文书
2014年度党员自我评议
2014/09/13 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
酒店辞职书范文
2015/02/26 职场文书
社区文明倡议书
2015/04/28 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书