2011-11-02 2 views
2

J'utilise ce script pour démarrer concepteur pintes avec mes widgets personnalisés (en Python 3) visibles:Marque designer Qt4 sous linux utiliser python3 pour le traitement des plug-ins widgets personnalisés

#!/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) 

Mais il semble que concepteur est en utilisant python 2.7 à utiliser les plug-ins widget:

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

Comment concepteur d'utiliser des instructions Python 3, pas Python 2?

J'utilise Kubuntu 11.10, KDE 4.7.2, python3.2 et python2.7, PyQt v4.8.5 compiled for Python 3

Répondre

2

Il ressemble à PyQt ne permet pas l'installation côte à côte du plugin concepteur qui gère des widgets personnalisés (libpythonplugin.so). Donc, il y aura normalement un seul plugin lié soit à python2, soit à python3, mais pas les deux.

Il semblerait que Kubuntu installe actuellement la version python2 du plugin (sur mon système Linux, c'est l'inverse). Si vous voulez une version python3 du plugin, compilez simplement un remplacement à partir de la source.

EDIT

Pour compiler un remplacement, d'abord vous assurer que vous avez les sip paquets installés. Je ne suis pas un expert sur Ubuntu, mais je pense que vous aurez besoin des paquets python-sip-dev et python3-sip-dev (plus les dépendances, bien sûr).

Ensuite, téléchargez les sources PyQt4 correspondant à la version installée sur votre système. J'ai été en mesure de trouver des paquets source pyqt ubuntu here.

Maintenant, décompressez l'archive, cd dans le répertoire source résultant (ressemble il devrait être PyQt-x11-gpl-4.8.5 pour Kubuntu 11.10), puis configurez la construction en utilisant 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 

Si cela se termine sans erreur, construire (mais ne pas installer):

$ make 

en utilisant les options de configuration ci-dessus, il faut environ 5 minutes pour compiler PyQt sur mon ancien système i686-AMD64-X2-6000. Une fois terminé, le plugin libpythonplugin.so devrait être dans le répertoire PyQt-x11-gpl-4.8.5/designer.

Vous pouvez maintenant sauvegarder et supprimer le plugin existant (sur mon système, dans le répertoire /usr/lib/qt/plugins/designer), et copier sur votre nouveau plugin.

+0

Sur mon ordinateur Windows, j'ai dû mettre Python dir dans le chemin, pour que 'libpython.dll' soit trouvé. Je pense donc que la version python n'est pas codée en dur dans 'libpythonplugin.so'. Qu'est-ce que tu penses? Pourrait-il être résolu en utilisant quelques modifications de chemin? – warvariuc

+0

On dirait que 'libpython2.7.so' est codé en dur dans' libpythonplugin.so'. Comment puis-je compiler 'libpythonplugin' pour python 3? Où puis-je trouver la source? – warvariuc

+0

@warvariuc. J'ai édité ma réponse pour inclure des instructions sur la façon de compiler le plugin. – ekhumoro

Questions connexes