在linux下使qt4设计器使用python3来处理自定义小部件插件

时间:2011-11-02 19:51:09

标签: python plugins pyqt pyqt4 qt-designer

我使用这个脚本启动qt designer,我的自定义小部件(在Python 3中)可见:

#!/usr/bin/env python3

import os, sys, subprocess

curDir = os.path.dirname(os.path.abspath(__file__))
params = list(sys.argv) # copy list
params[0] = 'designer' # "designer-qt4" on Linux

widgetsDir = os.path.join(curDir, 'wic', 'widgets')

# add search path for custom widgets and plugins for designer
os.putenv('PYQTDESIGNERPATH', widgetsDir)

subprocess.Popen(params)

但看起来设计师正在使用python 2.7来使用widget插件:

vic@ubuntu:~/wic$ python3 qt_designer.pyw 
vic@ubuntu:~/wic$   File "/home/vic/wic/wic/widgets/w_date_edit_plugin.py", line 63
    app.exec()
           ^
SyntaxError: invalid syntax

如何指示设计人员使用Python 3而不是Python 2?

我使用Kubuntu 11.10,KDE 4.7.2,python3.2和python2.7,PyQt v4.8.5 compiled for Python 3

1 个答案:

答案 0 :(得分:2)

看起来PyQt不允许并行安装处理自定义小部件(libpythonplugin.so)的设计器插件。所以通常会有一个插件链接到python2或python3,但不是两者。

看来Kubuntu目前安装了插件的python2版本(在我的linux系统上,反之亦然)。如果你想要一个python3版本的插件,只需从源代码编译替换。

修改

要编译替换程序,请首先确保已安装sip个程序包。我不是ubuntu的专家,但我认为你需要python-sip-devpython3-sip-dev包(当然还有任何依赖)。

接下来,下载与您系统上安装的版本匹配的PyQt4源。我能够找到一些ubuntu pyqt源包here

现在解压缩tarball,cd到生成的源目录(对于Kubuntu 11.10看起来应该是PyQt-x11-gpl-4.8.5),然后使用python3配置构建:

$ cd ~/tmp
$ tar -xf python-qt4_4.8.5.orig.tar.gz
$ cd PyQt-x11-gpl-4.8.5
$ /usr/bin/python3.2 configure.py -c -j 4

如果完成没有错误,请构建它(但不要安装它):

$ make

使用上面的配置选项,在旧的i686-AMD64-X2-6000系统上编译pyqt大约需要5分钟。完成后,libpythonplugin.so插件应位于PyQt-x11-gpl-4.8.5/designer目录中。

您现在可以备份并删除现有的插件(在我的系统中位于/usr/lib/qt/plugins/designer目录中),并复制新的插件。