2011-11-10 5 views
11

Sto usando Eclipse 3.7.1 con l'ultimo componente PyDev per la codifica Python. Sto usando PyQt4. Nella parte superiore del mio file ho:I nomi PyQt4 visualizzati come non definiti in eclissi, ma funzionano bene

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

Inoltre, l'albero PyQt4 è incluso nell'elenco di Esplora progetti. Tuttavia, eclipse continua a pensare che nomi come QMainWindow non siano definiti. Il codice funziona bene. Come posso ottenere eclissi per riconoscere quei nomi.

Grazie

risposta

17

PyQt è in realtà un pacchetto di librerie C++ Qt. Quindi non sono file .py e PyDev non può analizzarli per ottenere ciò che è contenuto. Devi aggiungere PyQt4 nella scheda Forced Builtins, in modo che PyDev possa usare una shell Python per "esaminare" quelle librerie e sapere cosa contiene. Ciò ti darà anche il completamento del codice per PyQt.

A parte questo, di solito non è una buona pratica utilizzare from foo import *. Imporrai tutto all'interno del tuo spazio dei nomi e non sapresti che cosa proviene da dove. Inoltre potresti avere scontri di nome che si mascherano a vicenda. Sebbene sia improbabile con PyQt, suggerisco comunque di abituarsi allo from PyQt4 import QtGui, QtCore e alle classi di riferimento come QtGui.QMainWindow.

+1

Grazie, Avaris. La soluzione ha funzionato bene e ha senso. Apprezzo anche il promemoria sul buon stile di programmazione in Python. È spesso il caso che coloro che sostengono il buon stile hanno avuto l'inconveniente di non seguirlo, cioè conoscono il dolore. –

0

Succede a volte che PyDev perdere la sua mente ... Se il riavvio di Eclipse non fare il trucco, in considerazione di fare questo: PyDevPreferencs

Fare clic sul pulsante "Applica" e selezionare il tuo interprete python. Questo dovrebbe costringere Eclipse a recuperare le librerie esistenti.

+0

Grazie per le idee, tuttavia, è stato persistente in molti riavvii. Un collega ha lo stesso problema. Ho impostato di nuovo l'interprete e ho persino aggiunto i pacchetti del sito \ PyQt4 come una cartella separata nel pannello in basso che hai mostrato. –

Problemi correlati