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 相关文章推荐
浅析AST抽象语法树及Python代码实现
Jun 06 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
python解析命令行参数的三种方法详解
Nov 29 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
python实现从ftp服务器下载文件
Mar 03 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
深入了解NumPy 高级索引
Jul 24 Python
解决python打开https出现certificate verify failed的问题
Sep 03 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
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python中base64加密解密方法实例分析
2015/05/16 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
Python Subprocess模块原理及实例
2019/08/26 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
管理失职检讨书
2014/02/12 职场文书
小学新学期寄语
2014/04/02 职场文书
网站客服岗位职责
2014/04/05 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
用人单位聘用意向书
2015/05/11 职场文书
《叶问2》观后感
2015/06/15 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL