PySide中Qt.escape的替代品?

时间:2014-08-16 02:17:56

标签: python xml qt pyqt pyside

我正在将一些代码从PyQt移植到PySide,后者包括一个自行开发的XML导出器。代码中包含如下行:

Qt.escape(textNote) 

这对我来说是新的。我的PyQt书(Summerfield,2008)写道:

  

Qt.escape()函数接受QString并使用任何XML返回它   metacharacters properly escaped。我们......转换任何   注释中的段落和换行符与它们的Unicode等价物。

但遗憾的是,由于我的目标是从文本创建XML,escape似乎已不再使用。

我在以下两个来源讨论了这个问题:

http://qt-project.org/wiki/Transition_from_Qt_4.x_to_Qt5#f166611e9788f9dbdff69088d622663e

http://www.kdab.com/automated-porting-from-qt-4-to-qt-5/

不幸的是,他们都建议使用QString.toHtmlEscaped()但这种方法在PySide中似乎不存在(事实上,QString不是PySide的词典的一部分)。

最后,截至四年前,似乎escape并不是他们打算在PySide支持的事情,as discussed at a bug report

  

在与其他PySide开发人员讨论后,我们决定不进行导出   这个功能,原因是:

     
      
  • 这个函数是QtGui的一部分,如果我们创建一个QtGui.Qt,这会引起QtCore.Qt的一些麻烦。
  •   
  • PyQt4也没有导出此功能。
  •   
  • 你可以使用python std lib中的函数来实现相同的目标,比如xml.sax.saxutils.escape()。
  •   
     

所以,我将此错误标记为WONTFIX。

这个似乎来回答我的问题,但它已经四年了,我很好奇它是否仍然存在。也就是说,没有PySide转义功能,那么转到saxutils的最佳选择是什么?或许在PySide中有一些类似于toHtmlEscaped的解决方法我忽略了?

1 个答案:

答案 0 :(得分:2)

每次使用

Qt.escape(yourText)

您可以使用

获得完全相同的功能
from xml.sax.saxutils import escape as escape
escape(yourText)

它有点不那么优雅,但它有效。四年前,PySide的开发人员与他们的initial reaction to a question保持一致。