Названия PyQt4, отображаемые как undefined в eclipse, но отлично работают

Я использую Eclipse 3.7.1 с последней надстройкой PyDev для кодирования Python. Я использую PyQt4. В верхней части файла у меня есть:

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

Кроме того, у меня есть дерево PyQt4, включенное в список Project Explorer. Тем не менее, затмение по-прежнему считает, что имена типа QMainWindow undefined. Код работает нормально. Как я могу заставить eclipse распознавать эти имена.

Спасибо

Ответ 1

PyQt на самом деле является оберткой библиотек С++ Qt. Таким образом, они не являются файлами .py, и PyDev не может их анализировать, чтобы получить то, что в них. Вам нужно добавить PyQt4 на вкладку Forced Builtins, чтобы PyDev мог использовать оболочку Python для "изучения" этих библиотек и знать, что в них. Это также даст вам завершение кода для PyQt.

Кроме того, обычно использовать не рекомендуется from foo import *. Вы будете импортировать все внутри своего пространства имен, и вы не знаете, откуда это происходит. Кроме того, вы можете столкнуться с именами, которые маскируют друг друга. Хотя это маловероятно для PyQt, я бы посоветовал вам привыкнуть к from PyQt4 import QtGui, QtCore и ссылочным классам, таким как QtGui.QMainWindow.

Ответ 2

иногда бывает, что PyDev теряют рассудок... Если перезапуск Eclipse не делает этого трюка, подумайте об этом: PyDevPreferencs

Нажмите кнопку "Применить" и выберите свой интерпретатор python. Это должно заставить Eclipse восстанавливать существующие библиотеки.