PySide中替代Qt.escape的方法有哪些?

3

我正在将一些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开发人员讨论后,我们决定不导出此函数,原因如下:

  • 此函数是QtGui的一部分,如果我们创建一个QtGui.Qt,这将对QtCore.Qt造成一些麻烦。
  • PyQt4也没有导出此函数。
  • Python标准库中有一些函数可以用来实现相同的目标,例如xml.sax.saxutils.escape()。

因此,我将把这个错误标记为WONTFIX。

这似乎回答了我的问题,但它已经四年了,我想知道它是否仍然适用。也就是说,没有 PySide 转义功能,所以最好的选择是转到 saxutils 吗?或者,也许有类似于 PySide 中的 toHtmlEscaped 的解决方法被我忽略了吗?
1个回答

2

每次你本应该使用

Qt.escape(yourText)

您可以使用相同的功能

from xml.sax.saxutils import escape as escape
escape(yourText)

这个方法不太优雅,但它有效。PySide开发人员一直保持着对于四年前一个问题的最初反应的一致性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接