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实现电子词典
Apr 23 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
python高级特性简介
Aug 13 Python
Python使用windows设置定时执行脚本
Nov 12 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
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
vuejs简单验证码功能完整示例
2019/01/08 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
vue实现文字加密功能
2019/09/27 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
为什么称python为胶水语言
2020/06/16 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
售后专员岗位职责
2013/12/08 职场文书
农贸市场管理制度
2014/01/31 职场文书
道路建设实施方案
2014/03/18 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
消防验收申请报告
2015/05/15 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
学习雷锋主题班会
2015/08/14 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
4种方法python批量修改替换列表中元素
2022/04/07 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL