如何在python中将带有unicode字符的项添加到QComboBox?

时间:2017-11-21 12:30:16

标签: python-2.7 qt unicode pyqt qcombobox

我试图在python中向QComboBox添加前缀单位,具体取决于参数的范围。问题是,当我尝试添加“μ”时,它出现为“Î1/ 4”,这不是我想要的。

我目前使用的代码是:

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)')

如果我输入print u'\u03bc',则会打印正确的字符。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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)')