类、方法和模块的 PyQt5 文档在哪里?

Zip*_*ead 3 pyqt5

我正在尝试学习 PyQt5,但我发现它非常困难,因为我无法猜测可用的方法。我刚刚花了整整一周的时间试图找到一种方法来模拟按钮按下。我最终找到了解决方案( QPushButton.animateClick() ),只是在偶然发现了一个有人遗漏的例子之后(这个人是怎么知道的?)。如果不参考可用于工具的内容,开发将非常困难!Riverbank 有一个我正在寻找的版本,但它并不完整,因此几乎毫无用处。

eyl*_*esc 5

作为绑定几乎具有所有功能(已知的不兼容性极少),因此文档:https : 有效,除了小例外。

虽然文档的目标是类和方法的描述是通用的,所以它们也有效地适用于,另一方面,许多示例是用编写的,但在许多情况下转换为 python 是微不足道的。

因此,为了避免双重任务,Riverbank Computing Limited似乎只记录了文档中指出的例外情况:https :


我的回答的下一部分将提出处理 Qt 文档的技巧。

Qt 文档也有一个易于理解的结构,例如让我们分析 QPushButton 类(https://doc.qt.io/qt-5/qpushbutton.html):

最上面有一张桌子:

在此处输入图片说明

该表指示如何将类包含在 C++ 项目中,如何将其添加到 qmake,它从哪个类继承,以及从它继承哪些类。从上面可以提取出PyQt5的相关信息,比如这个类属于哪个子模块:在这种情况下我们使用QT += widgetsthat告诉我们它属于QtWidgets子模块,一般来说ifQt += submodulefoo属于QtSubModuleFoo(camelcase)

如果你想知道QPushButton类的所有方法,你必须使用表格下方的“所有成员列表,包括继承的成员”链接,在这种情况下链接将是https://doc.qt.io/qt -5/qpushbutton-members.html其中是所有类方法、枚举等的完整列表。

其他理解 Qt/C++ 和 PyQt5/Python 之间转换的技巧是:

  1. 一些方法使用指针来接收信息,例如:

    那些转换为 PyQt5 为:

    lay = QtWidgets.QXLayout()
    left, top, right, bottom = lay.getContentsMargins()
    
    Run Code Online (Sandbox Code Playgroud)
    process = QProcess()
    # ...
    ok, pid = process.startDetached()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 一些方法碰撞与保留字如execraiseprint等,以便避免不相容,下划线在端加入:exec_raise_print_,等

  3. 在Qt中,所述Q_SLOT和Q_SIGNAL被翻译成蟒通过使用所述@pyqtSlot和@pyqtSignal装饰器。


总之,我的建议是您同时使用 Qt 和 PyQt5 文档来了解所有功能,此外,SO 中有许多关于从一种语言到另一种语言的翻译的问答,以便您可以从中学习。

也可以使用 Qt助手工具查阅 Qt 文档。