2012-02-03 27 views
0

QLabelのxmlファイルからユニコード文字列を表示します。 QLabelにはH Oと表示する必要がありますが、添え字として「2」という数字(Unicode文字U + 2082)が付いています。 QLabelはhtml文字列を取ることができますが、このhtmlをxmlに入れることはできません。Windowsの下付き文字2のユニコード文字を表示できません

これはLinuxでは正しく表示されますが、Windowsでは添え字2の代わりにガベージが表示されます。フォントファミリを変更するなど、さまざまな方法を試しましたが、Windowsでは動作しません。どうして?

+0

?ラベルに表示する前にテキストを正しくデコードしてもよろしいですか? – ekhumoro

+0

単にself.lb_input_unit.setText(input_unit)と入力します。ここで、input_unitはデコードせずにxmlから直接取り出したUnicode文字列です。 xmlにはすべての文字列がユニコードで格納されており、すべてブラウザで正しく表示されます。 WindowsにはPythonのものがあります。私が言ったように、添え字2はLinux上でうまくいきます。 – linuxoid

答えて

3

おそらくこれはPythonではなくフォントの問題です。 WindowsのすべてのフォントにU + 2082があるわけではありません。この文字を含む適切なフォントを選択する必要があります。

たとえば、「Arial Unicode MS」にはこれがあります。勝利7で

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_()) 

は、32ビット、それが与える:下記の例を検討

あなたはこの結果を生成するために使用しているどのようなコード

enter image description here

+0

いいえ、動作しません。私はself.lb_input_unit = QLabel(u "H \ u2082O")self.lb_input_unit.setStyleSheet( "font-family :: Arial Unicode MS;")しかし、それでも2を表示しません – linuxoid

+0

@ user665327:ちょうどペーストされたものがあなたのスクリプトでまったく同じである場合は、タイプミスがあります。 '::'に注意してください。それ以外の場合は、実際にそのフォントを持っているかどうかを確認してください。 'charmap.exe'でチェックして、適切なフォントを見つけることもできます。 – Avaris

+0

Doh !!!ダブルコロン、愚かな私!それは今働く。どうもありがとう! – linuxoid

関連する問題