wxPython:检测鼠标点击位图

时间:2017-04-20 13:27:51

标签: onclick click wxpython

我正在尝试使用wxpython检测位图上的clic。 on_click过程似乎没有clic运行,并且在单击时不运行。 我做错了什么?

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#

import os
import wx
import wx.lib.agw.thumbnailctrl as TC
import Image

filename="Raphael-Poli-angle.png"
class MyForm(wx.Frame):
    def on_clic(self):
       print "clicked"

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Choose Dot in Picture", size=(700,500))
        self.panel = wx.Panel(self, wx.ID_ANY)
        png = wx.Image(filename, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        image=wx.StaticBitmap(self.panel, -1, png, (1, 1), (png.GetWidth(), png.GetHeight()))
        image.Bind(wx.EVT_LEFT_DOWN, self.on_clic())
        self.Show(True)

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    app.SetTopWindow(frame)
    frame.Show()
    app.MainLoop()

2 个答案:

答案 0 :(得分:2)

您不必“输入活动”。该活动来自外部 - 取决于您的行动。 将“def on_clic ...”更改为

  def on_clic(self, evt):

并将“image.Bind ...”更改为

    image.Bind(wx.EVT_LEFT_DOWN, self.on_clic)

如果您将on_clic更改为:

def on_clic(self, evt):
  x, y=evt.GetPosition()
  print "clicked at", x, y

...你也可以获得点击图像的位置。

请参阅:https://wxpython.org/docs/api/wx.MouseEvent-class.html

答案 1 :(得分:0)

所有事件处理程序必须将事件除外作为参数。 on_clic应该是

def on_clic(self, event):
    print "clicked"