Zimm3r
Zimm3r

Reputation: 3425

wxPython clearing hinted text causes crash

As the title says when I implement code to clear hinted text and it is run the application crashes.

As far as I know this is only on Mac OS X 10.8 but that is also all I have been able to run it on.

On other code it does run and only once I enter text into it (After giving focus) does it crash. But this app crashes immediately (I think something to do with no other widgets and so it get focus right away). Updated example so it no longer crashes right away now you have to click on the combo box and try to type in it for it to crash.

This however does not occur if the text is anything but "" it seems.

Code

import wx


class MyCrashyPanel(wx.Panel):
    def __init__(self, parent):

        wx.Panel.__init__(self, parent, -1)

        # another widget to take focus at first otherwise it crashes instantly!

        sizer = wx.BoxSizer(wx.VERTICAL)

        self.text_ctrl = wx.TextCtrl(self, -1, value = "There are major problems here.\nWithout this to auto take focus this will crash immediatly just by trying to clear the hint.\nNow you have to click on the combo ctrl and try to type.", style = wx.TE_MULTILINE)


        self.search_ctrl = wx.ComboBox(self, -1)
        self.search_ctrl.SetMinSize((650, -1))
        self.search_ctrl.SetSize((650, -1))
        self.search_ctrl.SetHint("This is are hint text; once it is clear and you try to type something in it it will crash on Mac OS X")

        sizer.Add(self.text_ctrl, flag = wx.EXPAND)
        sizer.Add(self.search_ctrl)

        self.SetSizer(sizer)

        self.FirstTimeSearchGetsFocus = True



        self.Bind(wx.EVT_BUTTON, lambda e: e.Skip(), self.text_ctrl)
        self.search_ctrl.Bind(wx.EVT_SET_FOCUS, self.OnSearchFocus)

        self.text_ctrl.SetFocus()


    def OnSearchFocus(self, event):
        print "Search Focus"
        if 1==1:
            print "First time"
            # clear the hinted text
            self.search_ctrl.SetHint("")
            self.search_ctrl.Clear()

            self.search_ctrl.Refresh()
            self.FirstTimeSearchGetsFocus = False

        event.Skip()

if __name__ == "__main__":
    app = wx.App(False)
    f = wx.Frame(None, -1)
    MyCrashyPanel(f)
    f.Show()
    app.MainLoop()

Crash Report

[Too big get here http://pastebin.com/9B1Sgh3P ]

Upvotes: 0

Views: 311

Answers (1)

VZ.
VZ.

Reputation: 22688

If it crashes, it's a bug in wxWidgets, so the only things to do are to:

  1. Try with a later version, i.e. 2.9.5 or svn/git if you can build it yourself.
  2. Report the bug if it still persists there, following the usual guidelines.

Upvotes: 1

Related Questions