有专门针对PyQt5的教程吗?
我正在寻找一个PyQt5教程。 第一次在没有教程的情况下用Python开始GUI开发是相当复杂的。
到目前为止,我只find了一些PyQt4教程,而且从Qt4到Qt5有所变化,例如Qt5中不再支持SIGNAL
和SLOT
这一事实,所以对于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模式将应用程序分为三层:
- 模型 〜>封装数据。 通知视图和控制器底层数据的任何变化。 这会分别更新输出或可用命令的显示。
- 查看 〜>将模型的相关输出显示给用户。
- 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等等。