Who's to blame?

Rob Williscroft rtw at freenet.co.uk
Thu Jan 3 17:48:24 CET 2008


Nicola Musatti wrote in news:92dfc2fc-0677-43c0-b34f-4f240fa40205
@e4g2000hsg.googlegroups.com in comp.lang.python:

Note there is a wxpython mailinglist/newsgroup:

    	news:gmane.comp.python.wxpython

[snip]
> problem lies in the fact that apparently ShowModal() does not return
> when either the Yes or the No buttons are pressed. Curiously, if you
> change the Yes and No buttons with the OK and Cancel ones that are
> currently commented everything works as expected.

This is because the wx.Dialog class has handlers for the wxID_OK
and wxID_CANCEL button identifiers, IIRC in windows the MS supplied
dialog procedure behaves this way.

> 
> As the sbs_test_xrc.py file below is automatically generated by
> wxPython 2.8.6.1's XRCed tool from a XRC file which in turn is
> generated by wxFormBuilder (http://wxformbuilder.org/), I really cant
> figure out to whom I should report this problem, assuming I'm not
> missing some obvious mistake of mine, that is.

> class MainFrame(sbs_test_xrc.xrcMainFrame):
>     def __init__(self, parent):
>         sbs_test_xrc.xrcMainFrame.__init__(self, parent)
>         self.button.Bind(wx.EVT_BUTTON, self.OnButton)

First you can make the dialog a member, you are showing and hiding it
so there is no need to create a new one every time OnButton is fired.

          self.dialog = sbs_test_xrc.xrcDialog(self)

          # now replace the defaults of ID_OK and ID_CANCEL
          #
          self.dialog.SetAffirmativeId( wxID_YES )
          self.dialog.SetEscapeId( wxID_NO )

Alternativly you could derive from xrcDialog as you are with
xrcMainFrame and do the above in the derived classes __init__.

>     def OnButton(self, event=None):
>         d = sbs_test_xrc.xrcDialog(self)
> ##        if d.ShowModal() == wx.ID_OK:
>         if d.ShowModal() == wx.ID_YES:
>             self.Close()
> 

http://www.wxpython.org/docs/api/wx.Dialog-class.html

Rob.
-- 
http://www.victim-prime.dsl.pipex.com/



More information about the Python-list mailing list