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继承问题
May 29 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
python 实现二维列表转置
Dec 02 Python
python实现小程序推送页面收录脚本
Apr 20 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
python对一个数向上取整的实例方法
Jun 18 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
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
python实现用户登录系统
2016/05/21 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python 读取DICOM头文件的实例
2018/05/07 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python输出指定字符串的方法
2020/02/06 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
体育教师自荐信范文
2013/12/16 职场文书
村安全生产责任书
2014/08/25 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
python 对图片进行简单的处理
2021/06/23 Python
nginx安装以及配置的详细过程记录
2021/09/15 Servers
mysql自增长id用完了该怎么办
2022/02/12 MySQL
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技