Сделайте QT4 конструктор под Linux, чтобы использовать Python3 для обработки пользовательских плагинов виджетов - PullRequest
2 голосов
/ 02 ноября 2011

Я использую этот скрипт для запуска 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 для использования плагинов виджетов:

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, скомпилированный для Python 3

1 Ответ

2 голосов
/ 03 ноября 2011

Похоже, что PyQt не допускает параллельной установки плагина дизайнера, который обрабатывает пользовательские виджеты (libpythonplugin.so).Таким образом, обычно будет один плагин, связанный либо с python2, либо с python3, но не с обоими.

Может показаться, что Kubuntu в настоящее время устанавливает версию плагина python2 (в моей системе linux это наоборот).).Если вам нужна версия плагина на python3, просто скомпилируйте замену из исходного кода.

EDIT

Чтобы скомпилировать замену, сначала убедитесь, что у вас есть пакеты sipустановлены.Я не эксперт по Ubuntu, но думаю, вам понадобятся пакеты python-sip-dev и python3-sip-dev (плюс любые зависимости, конечно).

Затем загрузите исходные коды PyQt4, соответствующие версии, установленной на вашем компьютере.система.Я смог найти некоторые исходные пакеты ubuntu pyqt здесь .

Теперь распакуйте tarball, cd в получившуюся директорию с исходным кодом (похоже, это должно быть PyQt-x11-gpl-4.8.5 для Kubuntu 11.10), изатем сконфигурируйте сборку, используя 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

Используя вышеописанноеВарианты конфигурации для компиляции pyqt в моей старой системе i686-AMD64-X2-6000 занимает около 5 минут.После завершения плагин libpythonplugin.so должен находиться в каталоге PyQt-x11-gpl-4.8.5/designer.

Теперь вы можете создать резервную копию и удалить существующий плагин (в моей системе он находится в каталоге /usr/lib/qt/plugins/designer) и скопировать новыйплагин.

...