Alternatives to Qt.escape in PySide?
我正在将一些代码从pyqt移植到pyside,其中包括一个自行开发的XML导出器。代码中充满了这样的行:
1 | Qt.escape(textNote) |
这对我来说是新的。我的Pyqt书(Summerfield,2008年)写道:
The Qt.escape() function takes a QString and returns it with any XML
metacharacters properly escaped. And we...convert any
paragraph and line breaks in the notes to their Unicode equivalents.
但不幸的是,对于我从文本创建XML的目标,
这个问题在我发现的两个来源进行了讨论:
http://qt project.org/wiki/transition_从_qt_4.x_到_qt5 f166611e9788f9dbdff69088d622663e
不幸的是,他们都建议使用
最后,在四年前,在一份bug报告中讨论到,似乎
After a discussion with other PySide developers, we decided not export
this function, the reasons are:
- This function is part of QtGui, if we create a QtGui.Qt, this will cause some headaches with QtCore.Qt.
- PyQt4 also didn't export this function.
- There are functions in python std lib that you can use to achieve the same goals, like xml.sax.saxutils.escape().
So, I'll mark this bug as WONTFIX.
这似乎回答了我的问题,但它已经四岁了,我很好奇它是否仍然有效。也就是说,是否没有Pyside转义功能,那么最好的选择是转到
每次你都会用
1 | Qt.escape(yourText) |
您可以使用
1 2 | from xml.sax.saxutils import escape as escape escape(yourText) |
它有点不那么优雅,但很管用。Pyside开发人员对四年前的一个问题的最初反应是一致的。