我在QLabel中显示来自xml文件的unicode字符串。我需要在QLabel中显示H 2 O,但是数字'2'作为下标(Unicode字符U + 2082)。 QLabel可以使用html字符串,但我不能把这个html放到xml中。
它在Linux中正确显示,但在Windows中它显示了一些垃圾而不是下标2.我尝试了许多不同的方法(包括更改字体系列),但它们都不适用于Windows。为什么呢?
答案 0 :(得分:3)
这可能是一个字体问题,而不是Python。并非Windows中的所有字体都具有U + 2082。您需要选择包含此字符的正确字体。
例如“Arial Unicode MS”就是这样。请考虑以下示例:
import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
unicode_font = QtGui.QLabel(u"Unicode Font: H\u2082O")
unicode_font.setStyleSheet("font-family: 'Arial Unicode MS', Arial, sans-serif; font-size: 15px;")
normal_font = QtGui.QLabel(u"Normal Font: H\u2082O")
normal_font.setStyleSheet("font-family: Arial, sans-serif; font-size: 15px;")
layout = QtGui.QVBoxLayout()
layout.addWidget(unicode_font)
layout.addWidget(normal_font)
widget.setLayout(layout)
widget.show()
sys.exit(app.exec_())
在Win 7 32-Bit上,它给出了: