Search code examples
pythonfontswxpythonpicklewxstyledtextctrl

How to pickle or save a WxPython FontData Object


I've been coding a text editor, and it has the function to change the default font displayed in the wx.stc.SyledTextCtrl.

I would like to be able to save the font as a user preference, and I have so far been unable to save it.

The exact object type is <class 'wx._core.Font'>.

Would anyone know how to pickle/save this?


Solution

  • Probably due to its nature, you cannot pickle a wx.Font.
    Your remaining option is to store its constituent parts.
    Personally, I store facename, point size, weight, slant, underline, text colour and background colour.
    How you store them is your own decision.
    I use 2 different options depending on the code.

    • Store the entries in an sqlite3 database, which allows for multiple indexed entries.
    • Store the entries in an .ini file using configobj

    Both sqlite3 and configobj are available in the standard python libraries.