【发布时间】:2014-02-13 06:17:39
【问题描述】:
我正在创建一个可点击的图像(带有文本+位图)小部件类作为wx.PyControl 的子类。我想将双击此小部件上的任何位置(文本、位图、背景)绑定到某个操作(此处称为OnClick)。
不幸的是,它不起作用:使用此代码,当我单击 MyBitmapButton 小部件的位图或文本部分时,不会调用 OnClick。 (见下面的问题)。
import wx
class MyBitmapButton(wx.PyControl):
def __init__(self, parent, id=-1, bmp=None, label='blah', pos = wx.DefaultPosition, size=(166,220),
style = 0, validator = wx.DefaultValidator,
name = "mybitmapbutton"):
style |= wx.BORDER_NONE
wx.PyControl.__init__(self, parent, id, pos, size, style, validator, name)
myimg = wx.StaticBitmap(self, -1, bmp, pos=(8,8), size=(150,150))
mytxt = wx.StaticText(self, -1, label, (6,165))
class MainFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size=(800,600))
sizer = wx.WrapSizer()
img = wx.Image('background.png', wx.BITMAP_TYPE_PNG)
bmp = wx.BitmapFromImage(img)
btn = MyBitmapButton(self, -1, bmp, label='a')
sizer.Add(btn, 0, wx.ALL, 10)
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(sizer, 0, wx.EXPAND|wx.LEFT|wx.RIGHT, 8)
self.Show()
# ################
# Why don't these bindings detect double-click anywhere on the widget ?
btn.Bind(wx.EVT_LEFT_DCLICK, self.OnClick)
self.Bind(wx.EVT_LEFT_DCLICK, self.OnClick, btn)
def OnClick(self, event):
print 'Clicked'
app = wx.App(0)
frame = MainFrame(None, 'Test')
app.MainLoop()
如何将双击按钮任意位置绑定到OnClick?
【问题讨论】:
标签: python events wxpython wxwidgets