- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在创建一个小部件,它将以一种漂亮的格式显示 XML 字符串。为此,我使用 QXmlStreamReader
和 QXmlStreamWriter
(基于 Format XML file in c++ or Qt 的答案)并将文本提供给 QTextBrowser
:
message = "<person><name>John</name><surname>Smith</surname><hobbies><sport>football</sport><sport>tenis</sport><activity>dancing</activity></hobbies></person>"
byteArray = QByteArray()
xmlReader = QXmlStreamReader(message)
xmlWriter = QXmlStreamWriter(byteArray)
xmlWriter.setAutoFormatting(True)
while (not xmlReader.atEnd()):
xmlReader.readNext();
if (not xmlReader.isWhitespace()):
xmlWriter.writeCurrentToken(xmlReader)
prettyMessage = str(byteArray.data())
textBrowser.setText(prettyMessage)
但是生成的文本不会将 \n
转换为新行:
如果我手动输入一个包含 \n
的字符串,它们会被转换为新行:
textBrowser.setText("1\n2\n3\n4")
我已经检查了 byteArray
的确切内容,以确保 \n
作为一个字符传递,而不是作为两个单独的“\”和“n”传递字符:
for i in range(0, byteArray.size()):
sys.stdout.write(byteArray.at(i))
按预期打印出 XML 字符串:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>John</name>
<surname>Smith</surname>
<hobbies>
<sport>football</sport>
<sport>tenis</sport>
<activity>dancing</activity>
</hobbies>
</person>
<小时/>
我正在使用 python 3.6 和 PyQt5
最佳答案
您需要解码QByteArray
中的数据。这可以使用 QTextStream
来完成,然后您可以轻松设置正确的编解码器:
byteArray = QByteArray()
xmlReader = QXmlStreamReader(message)
xmlWriter = QXmlStreamWriter(byteArray)
xmlWriter.setAutoFormatting(True)
while (not xmlReader.atEnd()):
xmlReader.readNext();
if (not xmlReader.isWhitespace()):
xmlWriter.writeCurrentToken(xmlReader)
stream = QTextStream(byteArray)
stream.setCodec(xmlWriter.codec())
textBrowser.setText(stream.readAll())
关于python - QTextBrowser 无法正确显示反斜杠字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47041212/
我有一个右下角倾斜的元素,我必须在其上放置一个盒子阴影。有时倾斜的 Angular 被徽章覆盖 - 我的问题不适用,如果是这样的话: 这是信息框及其边 Angular 的 (s)css 部分(还有更多
是否可以在纯 html/css 中创建类似下面的内容? 我想做这个响应式和全 (100%) 宽度(最大左 Angular 100 像素,右边最小 50 像素,类似的东西)。 最佳答案 您可以通过转换(
如何在 fabricjs 文本中为文本提供渐变或斜 Angular 效果?? http://fabricjs.com/fabric-intro-part-2/ 这里给出了形状和所有示例,我将其与文本绑
我用过: http://apps.eky.hk/css-triangle-generator/ 为彼此对 Angular 放置的两个不等边三 Angular 形生成 css: 左下三 Angular
我是一名优秀的程序员,十分优秀!