0

在我的应用程序中有时会出现这样的错误:

    msg = QtGui.qApp.translate("@default", error_msg)
TypeError: function takes exactly 5 arguments (1 given)

奇怪的是,在大多数情况下,error_msg 总是非空字符串,所以函数真的有 2 个参数。

这段代码放在继承自 QThread 的类中,新线程正确启动并发出执行槽的信号。插槽的代码因上述错误而失败。

我不能把我的代码放在这里,因为它太复杂了,我不能在更小的例子中重现这个错误。当我玩的时候,可能发生的最糟糕的结果是空字符串,永远不会出现这样的错误。甚至是 QApplication 没有初始化。

因此,我不确定是 Qt4 还是 PyQt4 问题。

任何想法?

谢谢, 迈克尔

编辑:使用时我收到完全相同的消息

self.tr(error_msg)
4

1 回答 1

0

我的同事已经解决了。当 error_msg 包含非 ascii 字符时会发生这种情况。

解决方案(编解码器默认为Latin1):

QtCore.QTextCodec.setCodecForTr(QtCore.QTextCodec.codecForName('utf-8'))
于 2013-05-02T12:06:13.210 回答