【发布时间】:2015-08-28 02:53:50
【问题描述】:
我现在正在使用 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()
【问题讨论】:
标签: python user-interface wxpython