简单的python画图代码_Python使用tkinter制作一个简易的绘图程序四(Python GUI编程)...

前几篇,我们使用Python中tkinter库制作了一个简易的画图板程序,实现了圆、椭圆、矩形、直线等图形的绘制功能。但是,绘图效果没有想象中好看,我们只是拖动鼠标实现了绘图功能,对于鼠标当前位置及我们要绘制的图形的样子是什么?我们没法实时掌握,如果能在绘制时用虚线展示我们绘制图形的样子,是不是看起来就高大上了?下面,我们来具体实现一下。

先看下效果吧

562c11dfa9ec8a13a2736cb09161648ba1ecc0d8.jpeg?token=e3592ea9ba6013c8167d101ee1b44deb&s=C13233770D0A67645EE1AFFE02005034拖动鼠标时显示绘图轨迹

4ec2d5628535e5dd90f326a910a452ebcf1b6254.jpeg?token=a154ff21f59e10653d21652efd8bae5c&s=75B53F7646D277644692596C0200A028释放鼠标后画出图形

绘制图形时显示鼠标绘制的轨迹,鼠标释放后,结束显示并画出我们需要的图形。

分 析

要想实现这个功能,起始,想想很简单,就是在鼠标移动的时候画出想要绘制的图形,并将之前绘制的图形擦除掉即可,但是问题来了,如果每次都绘制然后显示,刷新画板,我们的内容跟刷新率是跟不上的。有没有好一点的解决办法呢?当然有了,在类的属性中我们定义一个self.temp_gui,并且将其设置为None,这就是Python的强大之处了,temp_gui用来存储我们之前绘制的图形类。实现这个功能的步骤如下:

鼠标移动时判断起始点是否符合绘图要求(坐标大于零)如果满足要求则判断self.temp_gui是否为空如果self.temp_gui不为空则清除如果self.temp_gui为空则开始绘制虚线图代码演示

不赘述,主要代码如下所示。

6609c93d70cf3bc7ab07c8ceb6624fa5cd112a77.jpeg?token=0aa255643495252c3d82100f156c7e0e&s=E0E2B7461AE4914F04F53C070100F0C2鼠标移动时绘制图形轨迹

行83-行86用于判断是否符合绘图要求,行87开始判断各种图形的绘图开关是否打开,如果打开,随着鼠标的移动会绘制响应的图形虚线轨迹。

00e93901213fb80e9d4c696750b3da2ab838944c.jpeg?token=446bc3144c5d57c1acc6afd95ad732ea&s=E0E2974612B5886B44D5310F0100E0C2鼠标释放后清除轨迹并绘制图形

这里以绘制直线和矩形为例,行126-行128用于判断绘图轨迹是否为空,如果不为空则清除它们。

最后,我们在类初始化代码中绑定这两个事件即可。代码如下。

self.canvas.bind('', self.endHandler)self.canvas.bind('', self.curHandler)

总 结

我们再来回顾下这个过程,这次我们绘制矩形看下。

a8773912b31bb0517310a23b50182fb04aede050.jpeg?token=79fcf8baf0a8f6fdca5c7c9f23042883&s=9D883F764B2245204CC1AFFE0200803E画矩形时显示矩形绘制轨迹

5d6034a85edf8db1893a48636f412850564e7403.jpeg?token=fbfdd2bc0032759f1ee0cea74d88edbc&s=1D8C3F764B2245200E5A3A780200C038释放鼠标后画出矩形

这是个酷酷的操作,感兴趣的朋友们可以自己敲代码试试,本文只是对主要代码进行了演示,想要源代码的下方留言索取。虽然实现了这些功能,但是我们绘制的图形如果能拖动,就更酷了,感兴趣的朋友们持续关注哦!

转载请注明出处(百家号:Python高手养成)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值