我正在寻找PyQt5教程。在没有教程的情况下首次使用Python开始GUI开发相当复杂。
到目前为止我只找到了一些PyQt4教程,并且由于Qt4到Qt5的变化,例如Qt5中不再支持事实SIGNAL
和SLOT
,所以具体到PyQt5的教程。
有人可以提供有关如何使用PyQt5开始GUI开发的教程吗?
答案 0 :(得分:69)
随着我继续深入PyQt5的深入,我将继续用我发现的一些更有光泽的宝藏来更新这个答案。
话虽这么说,我现在正在采取一个粗略的草案"快速介绍PyQt5。我还将提供有用资源的链接。我也是这个框架的新手,我将详细阐述我认为使用它的一个好策略,因为我想出了这个策略。可能还有其他好的策略,所以如果有人要添加任何内容,请发表评论。这非常重要。
我从其他答案中建议的示例代码中学到了很多东西,但是示例无法帮助的是PyQt5的深层魔法。其中有很多魔法的框架(PyQt5,Django,SQLAlchemy,......)非常棒,因为大量的苦差事被抽象出来。另一方面,并不总是清楚到底是怎么回事,或者你应该怎么做。
幸运的是,我们似乎有选择:
QtDesigner:在你的键盘着火的那些日子里,有一个摇滚乐。在安装包中调用GUI-Builder。当你看到它产生的代码时(可能只在社区版本中?),你就会明白为什么可能不是它看起来的万能药。
QML:灵丹妙药的另一个候选者:从格式化的JSON构建声明式GUI。荫
Qt Quick:QML的框架。到目前为止,它看起来非常简单,但是还没有被这些东西所吸引。 似乎总是手工学习它。
The Model-View Framework(1):模型视图(不是MVC)将处理表示/交互的代码与管理数据的代码分开,目的是提供模块化。
通过使用实现模型 - 视图设计模式的类集,大大简化了PyQt5中的编码。 Model-View是模型 - 视图 - 控制器(MVC)的演变,其中Controller已与View重新组合。他们看起来像是同床异梦,但是,大多数程序的逻辑 处理用户或数据:它似乎具有某种意义,至少在平流层面。
从鸟的眼睛:
<强>模型 - 视图 - 控制器强>
这种广泛使用的设计模式将应用程序分为3层:
<强>模型 - 视图强>
此设计模式将Controller置于View中。这样,视图能够处理用户的整个交互。具体而言,这些是信号和插槽机制。
回调
信号和插槽
..... **我很抱歉,但我现在必须签字。我会回来继续加入这个。 **
例如,您可以从itemviews/editabletreemodel
示例中获取树视图,然后从QFileSystemModel
示例交换文件系统模型(itemviews/dirview
),并且您可以使用headers = ("Title", "Description")
file = QFile(':/default.txt')
file.open(QIODevice.ReadOnly)
model = TreeModel(headers, file.readAll())
file.close()
self.view.setModel(model)
示例。已经获得了目录树的完整(工作)视图。漂亮时髦。
因此,您将从editabletreemodel示例中获取代码:
model = QFileSystemModel()
model.setRootPath('')
self.view.setModel(model)
...并从dirview交换模型:
qtdemo
......它只是有效。惊人。
下一步(在我的情况下)(*我认为)是实现一个自定义模型,然后我将同时使用多个视图,但我不知道这种事情是否适合您的用例。
以下是我在旅行中发现的一些宝石。希望他们帮助你。
This is a tutorial on Model-View for Qt5.(1)这是官方Qt5文档中非常详细的文档。在Qt5网站上可以找到大量有用的文档。请记住,它适用于Qt5(C ++库),但读取的差异是微不足道的(无论如何PyQt5官方文档指向那里)。
This PDF contains a quick high-level to PyQt4's Model-View framework.请注意,它适用于PyQt4(不是PyQt5),但它实际上适用于Python(而不是C ++),我发现它很快就教会了我很多。
我刚开始玩图形视图,我发现this tutorial on the Graphics View Framework非常有用。这与%PYTHON_HOME%\Lib\site-packages\PyQt5\examples
示例代码中用于生成一些光滑效果的视图相同。我稍后会更新这个。
This is a complete list of all of the Qt5 Modules.
This is a complete list of all of the Qt5 Classes.
This is a complete list of all functions in the Qt5 API.
正如katsh在另一个回答的评论中所指出的,here is a link to the example code for PyQt5.2.1 on GitHub
此外,您的发行版附带了示例代码的副本,可在以下位置找到:
%PYTHON_HOME%\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.py
如果您正在使用PyDev(Eclipse),只需右键单击PyDev Package Explorer中的示例主模块文件或Navigator =:&gt;即可运行示例。 Run As =:&gt; Python Run
在我(不那么)谦虚的意见中,最好的一个是:
{{1}}
在我目前的项目中,我正在进行逆向工程这个例子。如果你看看它,你就会明白为什么。继续..;)
享受!
答案 1 :(得分:27)
一直在寻找PyQt5教程?别再看了!你不会在互联网上找到很多。
不是真正的教程,但在以下路径中非常容易理解的基本脚本:
/ python / lib / site-packages / PyQt5 / examples
你会在100
个文件夹中找到30
个例子,从初级到高级,包括基本窗口,菜单,标签,布局,网络,OpenGL等。
答案 2 :(得分:8)