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 18 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
Python中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
深入学习Python中的装饰器使用
Jun 20 Python
django初始化数据库的实例
May 27 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
opencv python如何实现图像二值化
Feb 03 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 Python
关于python中remove的一些坑小结
Jan 04 Python
pycharm无法安装cv2模块问题
May 20 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下MAIL的另一解决方案
2006/10/09 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
script标签的 charset 属性使用说明
2010/12/04 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
python实现的简单猜数字游戏
2015/04/04 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python之pymysql的使用小结
2019/07/01 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
在django模板中实现超链接配置
2019/08/21 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
详解Python IO口多路复用
2020/06/17 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
酒店led欢迎词
2014/01/09 职场文书
小学教师听课制度
2014/02/01 职场文书
小学作文评语大全
2014/04/21 职场文书
委托证明书
2014/09/17 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
邀请函模板
2015/02/02 职场文书
小学班主任工作随笔
2015/08/15 职场文书
企业法人任命书
2015/09/21 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
导游词之吉林吉塔
2019/11/11 职场文书