我使用这个脚本启动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
答案 0 :(得分:2)
看起来PyQt不允许并行安装处理自定义小部件(libpythonplugin.so
)的设计器插件。所以通常会有一个插件链接到python2或python3,但不是两者。
看来Kubuntu目前安装了插件的python2版本(在我的linux系统上,反之亦然)。如果你想要一个python3版本的插件,只需从源代码编译替换。
修改强>
要编译替换程序,请首先确保已安装sip
个程序包。我不是ubuntu的专家,但我认为你需要python-sip-dev
和python3-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
目录中),并复制新的插件。