我正在将一些PyQt的代码移植到PySide,其中包括一个自制的XML导出器。代码中充斥着这样的行:
Qt.escape(textNote)
这对我来说是新的。我的PyQt书(Summerfield,2008)写道:
Qt.escape()函数接受一个QString并返回带有任何XML元字符的字符串{{link1: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词汇表的一部分)。
最后,截至四年前,似乎他们不打算在PySide中支持escape
,正如在错误报告中讨论的那样:
这似乎回答了我的问题,但它已经四年了,我想知道它是否仍然适用。也就是说,没有 PySide 转义功能,所以最好的选择是转到 saxutils 吗?或者,也许有类似于 PySide 中的 toHtmlEscaped 的解决方法被我忽略了吗?与其他PySide开发人员讨论后,我们决定不导出此函数,原因如下:
- 此函数是QtGui的一部分,如果我们创建一个QtGui.Qt,这将对QtCore.Qt造成一些麻烦。
- PyQt4也没有导出此函数。
- Python标准库中有一些函数可以用来实现相同的目标,例如xml.sax.saxutils.escape()。
因此,我将把这个错误标记为WONTFIX。