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语句、函数与方法的使用技巧总结
Dec 08 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
python实现淘宝秒杀脚本
Jun 23 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
Pytorch转onnx、torchscript方式
May 25 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 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批量生成随机用户名
2008/07/10 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PDO::prepare讲解
2019/01/29 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
PHP7 其他修改
2021/03/09 PHP
js 事件小结 表格区别
2007/08/13 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
Javascript实现单例模式
2016/01/24 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python简单实现9宫格图片实例
2020/09/03 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
程序员机试试题汇总
2012/03/07 面试题
小区门卫管理制度
2014/01/29 职场文书
教育学习自我评价
2014/02/03 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
车辆转让协议书
2014/04/15 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
护士找工作求职信
2014/07/02 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
个人剖析材料范文
2014/09/30 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
用python开发一款操作MySQL的小工具
2021/05/12 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB