2017-11-21 8 views
0

私は、パラメータの範囲に応じて、QComboBoxにプリフィックス単位を追加しようとしています。問題は、「μ」を追加しようとすると、「Î1/ 4」として出てきます。これは私が望むものではありません。PythonでQComboBoxにユニコード文字の項目を追加するにはどうしたらいいですか?

私が現在使用しているコードは次のとおりです。私はprint u'\u03bc'を入力した場合

def build_unit_box(self, measure): 
    listed = [] 
    if measure in {'P', 'frep'}: 
     for pref in ['', 'k', 'M', 'G']: 
      listed.append(str(pref + units.get(measure))) 
     exec("%s" % 'self.unit_' + measure + '.addItems(listed)') 
    elif measure in {'W', 'lambda', 'tau'}: 
     for pref in ['', 'm', u'\u03bc'.encode('utf-8'), 'n']: 
      print pref 
      listed.append(str(pref + units.get(measure))) 
     exec("%s" % 'self.unit_' + measure + '.addItems(listed)') 

正しい文字が印字されます。

どうすればこの問題を解決できますか?

答えて

0

問題が見つかりました。別の関数のコードの一部をコピー貼り付けたので、文字をstrに型キャストしていたため、間違ったエンコーディングが発生しました。 完全に動作します。

def build_unit_box(self, measure): 
    listed = [] 
    if measure in {'P', 'frep'}: 
     for pref in ['', 'k', 'M', 'G']: 
      listed.append(str(pref + units.get(measure))) 
     exec("%s" % 'self.unit_' + measure + '.addItems(listed)') 
    elif measure in {'W', 'lambda', 'tau'}: 
     for pref in ['', 'm', u'\u03bc', 'n']: 
      print pref 
      listed.append(unicode(pref + units.get(measure))) 
     exec("%s" % 'self.unit_' + measure + '.addItems(listed)') 
関連する問題