wxpython frame鼠标拖动_wxpython用鼠标移动绘制点

本文介绍如何使用wxPython进行图像处理,通过鼠标点击绘制点,并实现鼠标移动时点的位置跟随移动。在当前代码中,按下左键可以绘制点,但移动鼠标时,所有点都显示出来。问题在于需要在移动鼠标时隐藏之前绘制的点,以实现点的平滑移动效果。
摘要由CSDN通过智能技术生成

我现在用wxpython做一些图像处理工作。我想用鼠标左键向下画一个点,用鼠标移动来移动绘制的点。在

下面是我的代码。按左键画点是可以的,但是当我移动鼠标时,先前绘制的点也显示出来了,这不符合我的预期。在

如何在移动鼠标时隐藏上一个点,使其看起来像是在移动这些点?在# -*- coding: utf-8 -*-

import wx

class MyFrame(wx.Frame):

isLeftDown = False

def __init__(self, parent):

wx.Frame.__init__(self, parent, id=wx.ID_ANY, size=wx.Size(500, 500))

bSizer1 = wx.BoxSizer(wx.VERTICAL)

self.m_panel = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition,

wx.DefaultSize, wx.TAB_TRAVERSAL)

bSizer1.Add(self.m_panel, 3, wx.EXPAND | wx.ALL, 5)

bmp = wx.EmptyBitmap(500, 500)

self.staticBMP = wx.StaticBitmap(self.m_panel, wx.ID_ANY, bmp)

self.SetSizer(bSizer1)

# bind event

self.staticBMP.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)

self.staticBMP.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)

self.staticBMP.Bind(wx.EVT_MOTION, self.OnMove)

def OnLeftDown(self, event):

pos = event.GetPositionTuple()

dc = wx.ClientDC(self.staticBMP)

dc.DrawCircle(pos[0], pos[1], 5)

self.isLeftDown = True

def OnLeftUp(self, event):

self.isLeftDown = False

def OnMove(self, event):

if self.isLeftDown:

pos = event.GetPositionTuple()

dc = wx.ClientDC(self.staticBMP)

dc.DrawCircle(pos[0], pos[1], 3)

if __name__ == '__main__':

app = wx.App()

frame = MyFrame(None)

frame.Show(True)

app.MainLoop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值