[PySide] trouble with special characters in widget.setToolTip()

Luc-Eric Rousseau lucericml at gmail.com
Thu Mar 3 17:01:56 CET 2016


That reply from Dan was the correct answer.

The reason why the string prints correctly in a console-like UI is
because these UI typically
expect stings to be UTF-8 and that chunk of bytes you pass it is a
valid UTF-8 string.

However Qt thinks that chunk of 8 bit character from python is Latin-1

If you made your python string unicode like this, both cases would work

   myText = u'special charactes cause headaches: {}'.format(quotationMark)

it's probably going to work fine also in that other host you use which
has set the default
8-bit encoding of Qt to Utf-8, because no encoding will take place.

On 3 March 2016 at 03:52, Dan Milburn <milburn at thefoundry.co.uk> wrote:
> Hi,
>
> It's not anything to do with the font.
>
> Qt uses 16-bit unicode strings internally.  If you give a str to a PySide
> function, it will need to decode it, and by default it will probably treat
> it as ASCII.  If you want Qt to assume 8-bit strings are UTF-8 encoded, you
> can use the following:
>
> from PySide.QtCore import QTextCodec
>
> QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))
>
>
> However it would be better practice to pass it unicode strings if you can.
>
>
> Dan
>
>
>
> On 3 March 2016 at 00:45, Frank Rueter | OHUfx <frank at ohufx.com> wrote:
>>
>> Thanks guys.
>>
>> >>That would imply that your tooltip uses a different default font.
>> Aha, that makes perfect sense, thank you!
>> I'm currently on OSX using Wing as my IDE. When I ran this code inside a
>> host application, it worked fine (because it changes the default font).
>> I will verify that though before moving on. Text encoding/decoding always
>> confuses me (I hardly have to deal with it, so there is no routine) and I
>> want to get it right this time.
>>
>> Cheers,
>> frank
>>
>>
>> On 03/03/2016 06:26 AM, Tim Roberts wrote:
>>
>> Sebastian Elsner | RISE wrote:
>>
>> Unicode is tricky, it bites me every time. This works:
>>
>>
>> It's not that hard.  There are two possibilities.  Either the setTool
>> function does not accept Unicode strings, or the default tool tip font does
>> not include those extended characters.
>>
>>
>> Please note, the .py file actually has to be saved/encoded as utf-8. You
>> need to do this via your editor's save/convert function.
>>
>>
>> Actually, it doesn't.  There are no characters in his file beyond the base
>> ASCII set, except for the one character in a comment, so the file coding is
>> irrelevant.  If this worked for you, then his original code would have
>> worked for you also.  That would imply that your tooltip uses a different
>> default font.  No one here has mentioned what operating systems they are
>> using; that makes a difference.
>>
>> --
>> Tim Roberts, timr at probo.com
>> Providenza & Boekelheide, Inc.
>>
>>
>>
>> _______________________________________________
>> PySide mailing list
>> PySide at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/pyside
>>
>>
>>
>> _______________________________________________
>> PySide mailing list
>> PySide at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/pyside
>>
>
>
>
> --
> Dan Milburn
> Software Engineer - Nuke
> The Foundry
> 5 Golden Square
> London
> W1F 9HT
> Tel: +44(0) 20 7479 4350 •   Fax: +44 (0)20 7434 2526 •  Web:
> http://www.thefoundry.co.uk
>
> The Foundry Visionmongers Ltd.
> Registered in England and Wales No: 4642027
>
>
>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
>



More information about the PySide mailing list