PyQt4 Python2 Unicode

时间:2015-09-12 22:57:07

标签: python pyqt special-characters

嘿伙计们,我一直在使用Ubuntu上的python和PyQt4计算器。

我有一些带有Unicode字符的按钮(后退箭头,root),我在终端中使用self.contentView命令来编译我的项目,它默认使用python 2一切都很顺利,但是当我运行程序时按钮上的文字没有正确显示。

我尝试将cxfreeze添加到我的脚本中,但它没有帮助。

以下是它在python2下的外观:

Python2

在Python3下:

Python3

我想知道是否有办法让cx_freeze使用python3,或者在python2下正确显示特殊字符。

任何帮助将不胜感激,谢谢。

2 个答案:

答案 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。
  •   

在文件顶部添加编码只会帮助操作系统在读取文件时不解释代码。