[Qgis-developer] Designing a plugin : TypeError raised on MacOS machines but not on Windows

Junior Delaz delazj at gmail.com
Wed Apr 15 09:20:49 PDT 2015


Hi all,
I'm testing a plugin I created with Plugin Builder on different platforms
and encounter a problem I can't understand. The same piece of code works on
Windows machines but not on MacOS ones where I get this error message.


Traceback (most recent call last):
  File
"/Users/harrissou/.qgis2/python/plugins/MapsPrinter/maps_printer.py", line
369, in saveFile
    progress.setLabelText(self.tr( u'Exporting maps from {}…'.format(title)
))
  File
"/Users/harrissou/.qgis2/python/plugins/MapsPrinter/maps_printer.py", line
87, in tr
    return QCoreApplication.translate('MapsPrinter', message)
TypeError: function takes exactly 5 arguments (1 given)

QCoreApplication.translate is called in a tr function that is generated by
Plugin Builder :

    def tr(self, message):
        """Get the translation for a string using Qt translation API.

        We implement this ourselves since we do not inherit QObject.

        :param message: String for translation.
        :type message: str, QString

        :returns: Translated version of message.
        :rtype: QString
        """
        # noinspection PyTypeChecker,PyArgumentList,PyCallByClass
        return QCoreApplication.translate('MapsPrinter', message)

Each time I run on MacOS, I get the previous error. But I remark that I
don't get this error if in the saveFile function, instead of
progress.setLabelText(self.tr( u'Exporting maps from {}…'.format(title) ))
I put
progress.setLabelText(self.tr( 'Exporting maps from {}…'.format(title) ))

All goes well except that I can't manage special characters and therefore
can encounter an UnicodeEncodeError error (on both platforms). But it never
complains about QCoreApplication.translate function.

Traceback (most recent call last):
  File
"/Users/harrissou/.qgis2/python/plugins/MapsPrinter/maps_printer.py", line
368, in saveFile
    progress.setLabelText(self.tr( 'Exporting maps from {}…'.format(title)
))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in
position 11: ordinal not in range(128)

Any idea is welcome.
Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20150415/91399f4b/attachment.html>


More information about the Qgis-developer mailing list