Hello Tom,

I encountered the same problem recently. The toolbar icons are a mix of 
png and svg images. The png images are displayed properly while the svg 
icons are not shown.  This is a problem with PyQt. I found a proposal on 
the web, where you should add the line

     import PyQt4.QtXml

somewhere to your code. This is because xml support is needed to read 
svg files. However, this did not work for me. Instead I now use a rather 
ugly workaround: I rename the original *.png icon files to *.svg for 
those icons that are expected to be svg files. Qt will then find an svg 
file but it's clever enough to load it as png.
Save those modified files somewhere as resources. Add them to the 
data_files list in your setup script and they will overwrite the 
original files at every build so you don't have to care any more.

You can find out which files have to be renamed by looking into  
PACKAGEPATH/matplotlib/backends/backend_qt4.py line 399 and below. 
Another approach would be to directly rename the files in 
NavigationToolbar2QT._init_toolbar() to *.png since matplotlib provides 
png and svg files for every icon.

Greetings,
     Sebastian


Am 06.02.2011 11:20, schrieb Tom van der Hoeven:
> Hello,
>
> I have a simple program
> ---------------graf.py--------------
>
> import matplotlib.pyplot as plt
> plt.plot([1,2,3,8,0,9,1,10,5])
> plt.ylabel('some numbers')
> plt.show()
> --------------------------------------------------
> If I look to a matplotlib figures on my screen using the exe made with
> py2exe I mis all the buttons but one of the navigation bar.
> If I work direct with the Python interpreted they are there.
> I use the current version of Pythonxy
>
> ------------ setup.py --------------
> from distutils.core import setup
> import py2exe
> import matplotlib
>
> name = 'graf.py'
> INCLUDES = [ 'sip' , 'matplotlib.numerix.random_array'
>                                 #        , 'PyQt4._qt'
>                                          , 'matplotlib.backends'
>                                          ,
> 'matplotlib.backends.backend_qt4agg']
> #['matplotlib.backends.backend_qt4agg']
> EXCLUDES = []
> [ '_gtkagg' , '_tkagg' , 'Tkconstants' , 'Tkinter' ,'tcl' ]
> #['_tkagg' , '_ps' , '_fltkagg' , 'Tkinter' , 'Tkconstants' , '_cairo' ,
> '_gtk' , 'gtkcairo' ,
>              # 'pydoc' , 'sqlite3' , 'bsddb' , 'curses' , 'tcl' ,
> '_wxagg' , '_gtagg' , '_cocoaagg' , '_wx' ]
> DLL_EXCLUDES = ['MSVCP90.dll']
> ICON_RESOURSES = []
> OTHER_RESOURCES = []
> DATA_FILES = matplotlib.get_py2exe_datafiles()
>
> setup(name             = name,
>         version          = '1.0',
>         options          = { "py2exe" : { 'compressed'   : 1,
>                                           'optimize'     : 2,
>                                           'bundle_files' : 2,
>                                           'includes'     : INCLUDES,
>                                           'excludes'     : EXCLUDES,
>                                           'dll_excludes' : DLL_EXCLUDES }
> } ,
>         console          = [ { 'script'          : name,
>                                'icon_resources'  : ICON_RESOURSES,
>                                'other_resources' : OTHER_RESOURCES, } ] ,
>         description      = 'Hele mooie',
>         author           = 'Tom van der Hoeven',
>         author_email     = 't...@vanderhoeven.biz' ,
>         maintainer       = 'Tom van der Hoeven',
>         maintainer_email = 't...@vanderhoeven.biz',
>         license          = '',
>         url              = 'http://projecthomepage.com',
>         data_files       = DATA_FILES,
>         )
> -------------------------
> can you help me
>
> Tom
>
> ------------------------------------------------------------------------------
> The modern datacenter depends on network connectivity to access resources
> and provide services. The best practices for maximizing a physical server's
> connectivity to a physical network are well understood - see how these
> rules translate into the virtual world?
> http://p.sf.net/sfu/oracle-sfdevnlfb
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>


------------------------------------------------------------------------------
The modern datacenter depends on network connectivity to access resources
and provide services. The best practices for maximizing a physical server's
connectivity to a physical network are well understood - see how these
rules translate into the virtual world? 
http://p.sf.net/sfu/oracle-sfdevnlfb
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to