在我的应用程序中,有时会出现这样的错误:
msg = QtGui.qApp.translate("@default", error_msg)
TypeError: function takes exactly 5 arguments (1 given)
奇怪的是,大部分时间它都有效,error_msg总是非空字符串,所以函数真的得到2个参数。
此代码放在继承自QThread的类中,新线程正确启动并发出执行槽的信号。插槽代码失败,上面有错误。
我不能把我的代码放在这里,因为它太复杂了,我无法在较小的例子中重现这个bug。当我玩的时候,可能发生的最糟糕的事情就是空字符串,永远不会出现这样的错误。甚至QApplication也没有初始化。
因此,我不确定它是Qt4还是PyQt4问题。
有什么想法吗?
谢谢, 米甲
编辑:使用
时,我收到完全相同的消息self.tr(error_msg)
答案 0 :(得分:0)
我的同事已经解决了它。当error_msg包含非ascii字符时会发生这种情况。
解决方案(默认情况下编解码器为Latin1):
QtCore.QTextCodec.setCodecForTr(QtCore.QTextCodec.codecForName('utf-8'))