读书人

[d]wxPython的button点击响应事件为何

发布时间: 2012-11-09 10:18:48 作者: rapoo

[d]wxPython的button点击响应事件为什么发生两次
使用的版本信息为:
python:2.5.1
wxPython:wxPython2.8-win32-unicode-2.8.7.1-py25
代码如下:

Python code
import wxclass MyFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, title="Hello My World")        b = wx.Button(self, -1, "Create and Show a Frame", (50,50))        self.Bind(wx.EVT_BUTTON, self.OnButton, b)        self.Bind(wx.EVT_CLOSE, self.OnClose)        self.Show()    def OnButton(self, evt):        dlg = wx.MessageDialog(self, 'Hello from Python and wxPython!',                                'A Message Box',                                wx.OK | wx.ICON_INFORMATION                                #wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_INFORMATION                                )        dlg.ShowModal()        dlg.Destroy()        evt.Skip()    def OnClose(self, evt):        dlg = wx.MessageDialog(self, 'Are you sure you want to close My World?',                                'Closing...', wx.YES_NO | wx.ICON_QUESTION)        ret = dlg.ShowModal()        dlg.Destroy()        if ret == wx.ID_YES:            evt.Skip()app = wx.App(0)MyFrame()app.MainLoop()

现在的问题是:我点击button之后对话框会出现两次,搞了好久,
实在是搜索不到答案了,请各位大侠帮忙看下,thks!!!---------------------
Double行动:
原帖分数:40
帖子加分:40


[解决办法]
代码看起来没问题,在我的机器上(linux+python2.7+wxpython2.8)运行也没问题。

对话框是两个一起出现?还是关上一个又出一个?

怀疑是鼠标灵敏度的问题。试试用键盘的回车键来打开/关上对话框。
[解决办法]
探讨
关键的问题是我不明白为什么我在frame中捕捉到了事件,然后skip,让事件抛向上层继续处理
但是frame的parent为空,按理说应该不会出现第二个弹出窗口啊,这才是我不明白的地方

[解决办法]
探讨
为了避免一个按钮充满frame,我添加了两个按钮,这个时候,点击任意一个button都会
弹出两次窗口,输出的id为:
before change id: -202
after change id: -201
before change id: -202
after change id: -201

读书人网 >perl python

热点推荐