我正在将一些代码从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
的解决方法我忽略了?
答案 0 :(得分:2)
每次使用
Qt.escape(yourText)
您可以使用
获得完全相同的功能from xml.sax.saxutils import escape as escape
escape(yourText)
它有点不那么优雅,但它有效。四年前,PySide的开发人员与他们的initial reaction to a question保持一致。