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抓取网页图片示例(python爬虫)
Apr 27 Python
python中sets模块的用法实例
Sep 30 Python
Python3遍历目录树实现方法
May 22 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
使用python进行拆分大文件的方法
Dec 10 Python
Python动态语言与鸭子类型详解
Jul 01 Python
Python爬虫代理池搭建的方法步骤
Sep 28 Python
Python爬虫开发与项目实战
Dec 16 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
Python制作表白爱心合集
Jan 22 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
简单的用PHP编写的导航条程序
2006/10/09 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
自我鉴定怎么写
2013/12/05 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
解决golang 关于全局变量的坑
2021/05/06 Golang