Где находится документация PyQt5 для классов, методов и модулей? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь выучить PyQt5, и я нахожу это очень трудным, так как не могу просто догадаться, какие методы доступны. Я только что провел целую неделю, пытаясь найти метод для имитации кнопки pu sh. В конце концов я нашел решение (QPushButton.animateClick ()) только после того, как наткнулся на пример, который кто-то там оставил (как этот человек узнал об этом?). Очень сложно разработать без какой-либо ссылки на то, что доступно для инструментов! У Riverbank есть версия того, что я ищу, но она еще не завершена, что делает ее практически бесполезной.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

, являющийся связыванием , имеет почти все функциональные возможности (существуют минимальные известные несовместимости), поэтому документация : https://doc.qt.io/ допустимо для за исключением небольших исключений.

Хотя целью документации является , описание классов и методов обобщенно c, поэтому они также справедливо применяются для , с другой стороны, многие примеры написаны на , но перевод во python во многих случаях тривиален.

Таким образом, чтобы избежать выполнения двойной задачи, кажется, что Riverbank Computing Limited документирует только исключения, указанные в документах: https://www.riverbankcomputing.com/static/Docs/PyQt5/


В следующей части моего ответа будут предложены советы по работе с документацией Qt.

Документация Qt также имеет простую для понимания структуру, например, давайте проанализируем класс QPushButton (https://doc.qt.io/qt-5/qpushbutton.html) ):

* 10 38 * Вверху находится таблица:

enter image description here

Эта таблица показывает, как включить класс в проект C ++, как добавить его в qmake от какого класса он наследует и какие классы наследуют от него. Из вышеизложенного можно извлечь соответствующую информацию для PyQt5, например, к какому субмодулю относится класс: в этом случае мы используем QT += widgets, который сообщает нам, что он принадлежит субмодулю QtWidgets, в общем, если Qt += submodulefoo принадлежит QtSubModuleFoo (верблюд)

Если вы хотите знать все методы класса QPushButton, вы должны использовать «Список всех членов, включая унаследованные» ссылка под таблицей, в этом случае ссылка будет https://doc.qt.io/qt-5/qpushbutton-members.html, где приведен полный список всех методов класса, перечислений и т. д. c.

Другие советы для понимания преобразования между Qt / C ++ и PyQt5 / Python:

  1. Некоторые методы используют указатели для получения информации, такой как:

    преобразованные в PyQt5 как:

    lay = QtWidgets.QXLayout()
    left, top, right, bottom = lay.getContentsMargins()
    
    process = QProcess()
    # ...
    ok, pid = process.startDetached()
    
  2. Некоторые методы сталкиваются с зарезервированными словами, такими как exec, raise, print, et c, чтобы избежать несовместимости, знак подчеркивания добавляется в конце: exec_, raise_, print_ и т. д. c

  3. В Qt Q_SLOT и Q_SIGNAL , которые переведены на python и используются через декораторов @pyqtSlot и @ pyqtSignal .


В заключение я рекомендую использовать Qt и Документация PyQt5 в то же время, чтобы знать все функциональные возможности, кроме того, в SO есть много вопросов и ответов о переводах с одного языка на другой, чтобы вы могли учиться там.

С документацией Qt также можно ознакомиться используя инструмент Qt Assistant .

0 голосов
/ 27 февраля 2020

Основная документация PyQt5 находится на официальном сайте:

https://www.riverbankcomputing.com/static/Docs/PyQt5/

Но она все еще не завершена, и большинство частей ссылаются на официальную документацию Qt:

https://doc.qt.io/qt-5/

Хотя это ориентировано на C ++, учтите, что почти каждый модуль, класс и функция ведут себя точно так же , как и в python, поэтому обычно лучше использовать это.

Учтите, что:

  • в списках функций вы всегда будете видеть возвращаемый тип слева от каждой функции;
  • " void " означает, что функция возвращает None;
  • при переопределении какого-либо существующего метода (особенно частного и виртуального), вы всегда должны возвращать ожидаемые типы, перечисленные для этой функции;
  • аргументы функции обычно записываются в виде [const] Type argName=default: обычно вы можете игнорировать часть «const» (это термин C ++), тогда как argName для аргументов ключевого слова может отличаться в PyQt;
  • некоторые позиционные или ключевые аргументы могут отличаться, или может иметь место подпись возвращаемого типа; это потому, что в C ++ вы можете использовать указатель на переменную в качестве аргумента, и функция изменит эту переменную, используя указатель (это упрощение);
  • все «свойства» не являются python свойствами, и они доступны только через функции скобок, такие как self.<b>width()</b> и self.<b>setWidth()</b>;
  • , некоторые методы имеют различные переопределения, в некоторых случаях python имеет особые случаи с различными аргументами, которые недоступны в C ++ , и наоборот; кроме того, некоторые методы вообще не существуют ни в одном, ни в другом случае;

Я предлагаю всегда использовать официальную документацию, это только привычка привыкать к ссылкам на C ++ ( и вы увидите, что это тоже познавательно); всякий раз, когда возникают какие-либо сомнения, просмотрите документацию PyQt, чтобы увидеть, в чем дело, и используйте команду help в оболочке python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...