0

我有一个使用 PySide 的 python 脚本,它工作正常。但后来我想检查它是否适用于 PyQt4。在将导入字符串更改为 PyQt4 之后,事情就出错了。错误指向主题,如下:

  File "./my_file.py", line 93, in showit
    curr_query = '.'.join(curr_query)
TypeError: sequence item 0: expected string, QString found

从文档中我可以看到 PySide 主题方法返回“unicode”字符串,但 PyQt4 返回 QString 对象。使用str ()、str() 等似乎并没有完成这项工作。这是功能代码:

def showit(self, idx):
    curr_query = []
    for i in xrange(idx+1):
>>    x = self.combo[i].currentText()
>>    if x:
            curr_query.append(x)
        else:
            break
    curr_query = '.'.join(curr_query)

这会读取一组 QCombobox 的文本以构建我稍后使用的点分隔字符串表示。标记的“>>”行是问题发生的地方 - 突然,“x”对象永远不会是空字符串,就像使用 PySide 库时一样。但是如果 self.combo[i] 是空的,那么它应该是空的。

我搜索了 SO 存档并找到了这个答案,但无法使用它。请建议如何解决这个问题。

4

1 回答 1

1

您需要将您的x值转换为各种类型的字符串。就像是

curr_query.append(str(x))

应该做的伎俩。

于 2013-05-19T07:51:55.600 回答