我有一些带有Unicode字符的按钮(后退箭头,root),我在终端中使用self.contentView
命令来编译我的项目,它默认使用python 2一切都很顺利,但是当我运行程序时按钮上的文字没有正确显示。
我尝试将cxfreeze
添加到我的脚本中,但它没有帮助。
以下是它在python2下的外观:
在Python3下:
我想知道是否有办法让cx_freeze使用python3,或者在python2下正确显示特殊字符。
任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
很久以前我用unicode字符创建了一个程序(PyQt4 / PySide和python 2.7.x),用cx_Freeze构建并运行。
我用例如:
u"\u25B2"
答案 1 :(得分:0)
QString只接受ASCII字符。我认为它不适用于Python v2或v3。您可以从QByteArray获得更多信息,因为它接受Latin-1。
来自文档:
http://pyqt.sourceforge.net/Docs/PyQt4/gotchas.html
对于Python v3,默认情况下会进行以下转换。
- 如果Qt需要char *(或const版本),那么PyQt4将接受仅包含ASCII字符的str或QString,一个字节,一个 QByteArray,或实现缓冲协议的Python对象。
- 如果Qt需要char(或const版本),那么PyQt4将接受与char *相同的类型,并且还要求单个字符是 提供。
- 如果Qt需要签名的char *或unsigned char *(或const版本),那么PyQt4将接受一个字节。
- 如果Qt需要签名字符或无符号字符(或const版本),那么PyQt4将接受长度为1的字节。
- 如果Qt需要QString,那么PyQt4将接受一个str,一个只包含ASCII字符的字节,一个QChar或一个QByteArray。
- 如果Qt需要QByteArray,那么PyQt4也将接受仅包含Latin-1字符或字节的str。
对于Python v2,默认情况下会进行以下转换。
- 如果Qt需要char *,signed char *或unsigned char *(或const版本),那么PyQt4将接受一个unicode或QString 仅包含ASCII字符,str,QByteArray或Python 实现缓冲协议的对象。
- 如果Qt需要char,signed char或unsigned char(或const版本),那么PyQt4将接受与char *相同的类型,签名 char *和unsigned char *并且还要求单个字符 提供。
- 如果Qt需要一个QString,那么PyQt4将接受一个unicode,一个仅包含ASCII字符,一个QChar或一个QByteArray的str。
- 如果Qt需要QByteArray,那么PyQt4将接受仅包含Latin-1字符或str的unicode。
在文件顶部添加编码只会帮助操作系统在读取文件时不解释代码。