有关类,方法和模块的PyQt5文档在哪里?

时间:2020-02-26 20:50:03

标签: pyqt5

我正在尝试学习PyQt5,但我发现这非常困难,因为我无法仅仅猜测可用的方法。我花了整整一个星期的时间来尝试找到一种模拟按钮按下的方法。我只有在碰到一个人被遗忘的例子(这个人怎么知道这个?)之后才找到解决方案(QPushButton.animateClick())。如果不参考工具可用内容,就很难开发! Riverbank具有我要查找的版本,但还不够完善,因此几乎没有用。

2 个答案:

答案 0 :(得分:2)

绑定,几乎具有所有功能(已知的最小不兼容性),因此文档:https://doc.qt.io/有效除了一些小例外。

尽管文档的目标是,但是类和方法的描述是通用的,因此它们也有效地适用于,另一方面,许多示例都用{{ 3}},但在许多情况下,将python转换为微不足道的内容。

因此,为了避免执行双重任务,似乎 Riverbank Computing Limited 仅记录文档中指出的异常:


我的答案的下一部分将提出处理Qt文档的提示。

Qt文档也具有易于理解的结构,例如,让我们分析QPushButton类(https://www.riverbankcomputing.com/static/Docs/PyQt5/):

顶部有一张桌子:

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

该表指示如何在C ++项目中包括该类,如何将其添加到qmake,它从哪个类继承以及从哪个类继承。从上面可以提取PyQt5的相关信息,例如该类所属的子模块:在这种情况下,我们使用QT += widgets通知我们它属于QtWidgets子模块,一般来说,如果Qt += submodulefoo属于QtSubModuleFoo(驼峰)

如果您想了解QPushButton类的所有方法,则必须使用表格下方的“所有成员的列表,包括继承的成员” 链接,在这种情况下,该链接为{ {3}}是所有类方法,枚举等的完整列表。

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

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

    那些转换为PyQt5的对象:

    lay = QtWidgets.QXLayout()
    left, top, right, bottom = lay.getContentsMargins()
    
    process = QProcess()
    # ...
    ok, pid = process.startDetached()
    
  2. 某些方法与诸如execraiseprint等保留字冲突,因此为避免不兼容,在末尾添加了下划线:{{1} },exec_raise_

  3. 在Qt中,通过void QLayout::getContentsMargins(int *left, int *top, int *right, int *bottom) const 装饰器使用翻译成python的bool QProcess::startDetached(qint64 *pid = nullptr)


最后,我的建议是,您同时使用Qt和PyQt5文档来了解所有功能,此外,SO中有很多关于从一种语言到另一种语言的翻译的问答,因此您可以从那里学习。 / p>

还可以使用Qt the Q_SLOT and Q_SIGNAL工具来查阅Qt文档。

答案 1 :(得分:0)

主要的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;
  • 某些函数可能具有不同的名称,因为它们保留在python上(打印,抬高等);在这种情况下,总是在下划线后面加上
  • 某些位置或关键字参数可能不同,或者返回类型签名可能;这是因为在C ++中,您可以使用指向变量的指针作为参数,并且该函数将使用指针更改该变量(这过于简化了);
  • 所有“属性”都不是python属性,只能通过其括号函数(例如self.width()self.setWidth();
  • 访问)
  • 某些方法具有不同的替代,某些情况下python具有特殊的情况,这些参数具有C ++中不可用的不同参数,反之亦然;同样,某些方法在一种情况或另一种情况下根本不存在;

我的建议是始终使用官方文档,习惯C ++引用只是一个习惯问题(而且您也会发现它具有教育意义);每当有疑问时,请查看PyQt文档以了解有什么不同,并在python shell中使用help命令。

相关问题