我在QLabel中顯示來自xml文件的unicode字符串。我需要在QLabel中顯示H O,但以數字「2」作爲下標(Unicode字符U + 2082)。 QLabel可以接受一個html字符串,但我不能把這個html放到xml中。無法在Windows上顯示下標2的Unicode字符
它在Linux中正確顯示,但在Windows中它顯示了一些垃圾而不是下標2.我嘗試了很多不同的方法(包括更改字體系列),但它們都不適用於Windows。爲什麼?
我在QLabel中顯示來自xml文件的unicode字符串。我需要在QLabel中顯示H O,但以數字「2」作爲下標(Unicode字符U + 2082)。 QLabel可以接受一個html字符串,但我不能把這個html放到xml中。無法在Windows上顯示下標2的Unicode字符
它在Linux中正確顯示,但在Windows中它顯示了一些垃圾而不是下標2.我嘗試了很多不同的方法(包括更改字體系列),但它們都不適用於Windows。爲什麼?
這可能是一個字體問題,而不是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位它給:
不,它不起作用。我有self.lb_input_unit = QLabel(u「H \ u2082O」)self.lb_input_unit.setStyleSheet(「font-family :: Arial Unicode MS;」)但它仍然不顯示2 – linuxoid 2012-02-03 02:20:25
@ user665327:如果代碼只是粘貼在你的腳本中是完全一樣的,然後有一個錯字。注意'::'。除此之外,檢查你是否真的有這種字體。您也可以使用'charmap.exe'來查找合適的字體。 – Avaris 2012-02-03 02:25:48
Doh !!!雙冒號,愚蠢的我!它現在有效。非常感謝! – linuxoid 2012-02-03 02:35:19
是您使用的代碼產生這樣的結果?您確定在將文字顯示在標籤中之前是否正確解碼了文字? – ekhumoro 2012-02-03 01:37:59
只需使用self.lb_input_unit.setText(input_unit),其中input_unit是一個unicode字符串,不需要任何解碼即可直接從xml中獲取。 xml在unicode中包含所有字符串,並且它們都在瀏覽器中正確顯示。 Windows上有一些Python。正如我所說,下標2在Linux上顯示得很好。 – linuxoid 2012-02-03 01:47:54