最近在用python做一个界面项目。以前都是用C++ 做Qt的。python支持PyQt,Pyside。Pyside和c++ Qt支持比较好。都是诺基亚推出的。
简单用了一下PyQt感觉不是很好用。
不过Pyside的bug挺多的。很多和c++版本的Qt运行效果不一样。
在做翻译的时候。发现pyside-lupdate有点问题。
所有类都从QObject继承。出现了unamed context。比较奇怪的是有些能识别出。有些识别不了。
查看并调试pyside-lupdate源码,发现在生成ts文件时,context在某些地方跳出了。默认contex是" "。然后就出现了unamed context。
跳出原因,看了一段代码。并没有看的太懂。可能跟对齐有关系吧。
static void parse( MetaTranslator *tor, const char *initialContext,
const char *defaultContext )
{
QByteArray context;
QByteArray text;
QByteArray com;
QByteArray prefix;
bool utf8 = false;
yyContextStack.push(ContextPair(initialContext, 0));
yyTok = getToken();
while ( yyTok != Tok_Eof ) {
if (yyContextPops > 0) {
// for ( int i = 0; i < yyContextPops; i++)
// yyContextStack.pop();
yyContextPops = 0;
}
然后把跳出部分代码注释掉。可以正确生成ts文件。感觉修改了类作用域。
不过代码里面没有类嵌套类的。
没出什么问题,勉强可以用。