我正在尝试学习 PyQt5,但我发现它非常困难,因为我无法猜测可用的方法。我刚刚花了整整一周的时间试图找到一种方法来模拟按钮按下。我最终找到了解决方案( QPushButton.animateClick() ),只是在偶然发现了一个有人遗漏的例子之后(这个人是怎么知道的?)。如果不参考可用于工具的内容,开发将非常困难!Riverbank 有一个我正在寻找的版本,但它并不完整,因此几乎毫无用处。
pyqt5作为qt5绑定几乎具有所有功能(已知的不兼容性极少),因此qt5文档:https : //doc.qt.io/对pyqt5有效,除了小例外。
虽然文档的目标是c++类和方法的描述是通用的,所以它们也有效地适用于pyqt5,另一方面,许多示例是用c++编写的,但在许多情况下转换为 python 是微不足道的。
因此,为了避免双重任务,Riverbank Computing Limited似乎只记录了pyqt5文档中指出的例外情况:https : //www.riverbankcomputing.com/static/Docs/PyQt5/
我的回答的下一部分将提出处理 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 之间转换的技巧是:
一些方法使用指针来接收信息,例如:
void QLayout::getContentsMargins(int *left, int *top, int *right, int *bottom) const
bool QProcess::startDetached(qint64 *pid = nullptr), 等等那些转换为 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)一些方法碰撞与保留字如exec,raise,print等,以便避免不相容,下划线在端加入:exec_,raise_,print_,等
在Qt中,所述Q_SLOT和Q_SIGNAL被翻译成蟒通过使用所述@pyqtSlot和@pyqtSignal装饰器。
总之,我的建议是您同时使用 Qt 和 PyQt5 文档来了解所有功能,此外,SO 中有许多关于从一种语言到另一种语言的翻译的问答,以便您可以从中学习。
也可以使用 Qt助手工具查阅 Qt 文档。
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |