2017-04-20 94 views
0

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

#!/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() 

回答

1

您不必“输入事件”。事件来自外部 - 取决于你的行动。 更改 “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

+0

哇,太棒了!非常感谢! –

0

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

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

感谢您的答案,但您可以请开发?什么是事件?我应该输入什么事件? –

+0

那里有几个wxpython教程。以下是对事件的简要介绍https://www.tutorialspoint.com/wxpython/wxpython_event_handling.htm – user2682863