有专门针对PyQt5的教程吗?

我正在寻找一个PyQt5教程。 第一次在没有教程的情况下用Python开始GUI开发是相当复杂的。

到目前为止,我只find了一些PyQt4教程,而且从Qt4到Qt5有所变化,例如Qt5中不再支持SIGNALSLOT这一事实,所以对于PyQt5有特定的教程是很好的。

有人可以提供关于如何启动与PyQt5的GUI开发的教程?

当我进入PyQt5的深处继续进行的时候,我也应该继续用我所发现的一些shiny宝贝来更新这个答案。

话虽如此,我现在正在采取一个“粗糙的草案”戳一下PyQt5的快速介绍。 我还将提供有用资源的链接。 我也是这个框架的新手,我会详细说明我认为是一个很好的使用策略,因为我把这个策略拿出来了。 有可能是其他好策略,所以如果有人有任何补充,请留下评论。 这是一个正在进行的工作。


战略

我从其他答案的build议中学到了很多示例代码,但是这些示例并没有帮助的是PyQt5的深层魔法。 其中有很多魔法的框架(PyQt5,Django,SQLAlchemy,…)非常棒,因为大量的苦差事是从你身上抽象出来的。 另一方面,并​​不总是清楚到底发生了什么,或者你应该怎么做。

幸运的是,我们似乎有select:

  • QtDesigner :在键盘着火的那些日子里,安装包中有一个叫做“GUI-Builder”的GUI-Builder。 当你看到这个代码生成的时候(可能只是在社区版本中),你会明白为什么这可能不是看起来的万灵丹。

  • QML :灵丹妙药的另一个候选者:从格式化的JSON构build声明式GUI。 百胜。

  • Qt Quick :QML框架。 就这一点而言,这看起来很容易,但是不要被这个东西所吸引。 它似乎总是归结为手工学习。

  • 模型 – 视图框架(1) :模型视图(而不是MVC)将处理演示/交互的代码从pipe理数据的代码中分离出来,目的是提供模块性。

通过使用实现Model-Viewdevise模式的类集,PyQt5中的编码大大简化。 模型 – 视图是模型 – 视图 – 控制器(MVC)的演变,其中控制器已经与视图重新组合。 他们看起来像是同床异梦,但是,程序的大部分逻辑处理用户或数据:至less在平stream层级,似乎是有一定的意义的。

从鸟的眼睛:

架构(S)

模型-视图-控制器

这种广泛使用的devise模式将应用程序分为三层:

  1. 模型 〜>封装数据。 通知视图和控制器底层数据的任何变化。 这会分别更新输出或可用命令的显示。
  2. 查看 〜>将模型的相关输出显示给用户。
  3. Controller〜 >封装用户交互,并通知相关事件的模型和视图。

模型-视图

  • graphics视图框架(1) 〜>在QGraphicsScene中将一切(包括embedded的QWidgets等)表示为QGraphicsItem(或其派生物),包括用于embedded小部件的代理类。 这些项目被认为是高度优化的,集成OpenGL支持是一个单线,这是很好的。

这种devise模式将控制器放入视图中。 这样,视图就能够处理整个用户的交互。 具体而言,这些是信号和插槽机制。

用户交互pipe理

callback

信号和插槽

….. **我很抱歉,但我现在必须签字。 我会回来继续添加到这一点。 **

实际例子

例如,您可以从itemviews/editabletreemodel示例获取树视图,然后从itemviews/dirview示例交换文件系统模型( QFileSystemModel ),并且您已经有了目录树的完整(工作)视图。 很时髦。

所以,你可以从editabletreemodel例子中获取代码:

 headers = ("Title", "Description") file = QFile(':/default.txt') file.open(QIODevice.ReadOnly) model = TreeModel(headers, file.readAll()) file.close() self.view.setModel(model) 

…从dirview模型中交换:

 model = QFileSystemModel() model.setRootPath('') self.view.setModel(model) 

…它只是工作。 惊人。

下一步(在我的情况下)(*我认为)正在实现一个自定义模型,然后我将同时使用几个视图,但我不知道这样的事情是否适合您的用例。

资源

这里是我在旅行中find的一些gem。 希望他们帮助你。

这是Qt5的Model-View教程。 (1)这是来自官方Qt5文档的非常详细的文档。 在Qt5网站上可以find很多有用的文档。 请记住,这是Qt5(C ++库),但差异是微不足道的通读(和PyQt5官方文档指出无论如何)。

这个PDF包含了一个PyQt4的Model-View框架的高级function。 请注意,这是PyQt4(而不是PyQt5),但它实际上是Python(而不是C ++),我发现它很快教会了我很多。

我刚刚开始使用Graphics View,并且在Graphics View Framework上find本教程非常有帮助。 这是在qtdemo示例代码中使用的相同视图来生成一些光滑的效果。 我会稍微更新一下。

这是所有Qt5模块的完整列表。

这是所有Qt5类的完整列表。

这是Qt5 API中所有函数的完整列表。

正如katsh在另一个答案的评论中指出的, 这里是一个链接到GitHub上PyQt5.2.1的示例代码

此外,示例代码的副本随您的发行版一起打包,可在以下位置find:

 %PYTHON_HOME%\Lib\site-packages\PyQt5\examples 

如果您使用的是PyDev(Eclipse),您可以通过在PyDev包资源pipe理器或Navigator => Run As =>> Python Run中右键单击示例的主模块文件来运行示例

最好的一个,在我的(不那么愚蠢的意见)是:

 %PYTHON_HOME%\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.py 

在我目前的项目中,我正在对这个例子进行逆向工程。 如果你检查出来,你会看到为什么。 未完待续.. ;)

请享用!

一直在寻找PyQt5教程一段时间? 不要再看! 你不会在互联网上find很多。

不是真正的教程,而是在下面的path下的不言自明的基本脚本

/ Python的/ lib目录/站点包/ PyQt5 /例子

你会发现从初学者到高级的30文件夹中有100例子,包括基本的窗口,菜单,标签,布局,networking,OpenGL等等。