Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让linux下的qt4设计器使用python3处理自定义小部件插件_Python_Plugins_Pyqt_Pyqt4_Qt Designer - Fatal编程技术网

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

让linux下的qt4设计器使用python3处理自定义小部件插件,python,plugins,pyqt,pyqt4,qt-designer,Python,Plugins,Pyqt,Pyqt4,Qt Designer,我使用此脚本启动qt designer,使我的自定义小部件(在Python 3中)可见: 但看起来designer正在使用python 2.7来使用小部件插件: 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: i

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

但看起来designer正在使用python 2.7来使用小部件插件:

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不允许并行安装处理自定义小部件的设计器插件(
libpythonplugin.so
)。因此,通常会有一个单独的插件链接到python2或python3,但不是两者都链接

看起来Kubuntu目前正在安装python2版本的插件(在我的linux系统上,情况正好相反)。如果您想要python3版本的插件,只需从源代码处编译一个替换

编辑

要编译替换软件,请首先确保已安装
sip
软件包。我不是ubuntu方面的专家,但我认为您将需要
pythonsipdev
python3sipdev
软件包(当然还有任何依赖项)

接下来,下载与系统上安装的版本匹配的PyQt4源代码。我找到了一些ubuntu pyqt源代码包

现在将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
如果完成时没有错误,则构建它(但不要安装它):

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


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

在我的Windows机器上,我必须将Python目录放入路径中,才能找到
libpython.dll
。因此,我认为python版本没有硬编码到
libpythonplugin.So
。你怎么认为?它可以通过一些路径调整来解决吗?看起来像是
libpython2.7。所以
被硬编码到
libpythonplugin.so
。如何为python 3编译
libpythonplugin
?我从哪里得到消息来源?@warvariuc。我已经编辑了我的答案,包括如何编译插件的说明。它工作了!更简单的是,我安装了
PyQt-x11-gpl-4.8.6
,并将python3版本放入
/usr/lib/x86\u 64-linux-gnu/qt4/plugins/designer/libpythonplugin.so
。我认为在为我的系统更新包时,包管理器会覆盖它。非常感谢你!
$ 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