是否有专门针对PyQt5的教程?

是否有专门针对PyQt5的教程?,第1张

是否有专门针对PyQt5的教程?

随着我深入PyQt5的旅程继续,我将继续用发现的一些更聪明的宝藏来更新此答案。

话虽如此,我现在正在快速介绍PyQt5的“基本草案”。我还将提供指向有用资源的链接。我也是这个框架的新手,我将详细说明我认为是使用该框架的好策略。可能还有其他好的策略,因此,如果有人要添加任何内容,请发表评论。这是一项正在进行的工作。


战略

我从另一个答案中建议的示例代码中学到了很多东西,但是这些示例对PyQt5的深层魔力没有帮助。其中包含很多魔术的框架(PyQt5,Django,SQLAlchemy等)非常棒,因为可以从您的身上提取大量繁琐的工作。另一方面,并​​不总是很清楚到底发生了什么,或者您应该怎么做。

幸运的是,我们似乎可以选择:

  • QtDesigner:在您的键盘着火的那些日子里,安装包中有一个叫人摇滚的GUI-Builder。当您看到由此产生的代码时(也许仅在社区版本中?),您将看到为什么这 可能 不是灵丹妙药。

  • QML:另一个灵丹妙药的候选人:从格式化的JSON构建声明式GUI。好吃

  • Qt Quick:QML的框架。至此,这似乎很容易实现,但是暂时不要被这些东西吸引。 它似乎总是归结为手工学习。

  • Model-View framework (1):Model-View(不是MVC)将处理表示/交互的代码与管理数据的代码分开,目的是提供模块化。

通过使用实现 Model-View设计模式 的类集,可以大大简化PyQt5中的编码。Model-View是Model-View-
Controller(MVC)的发展,其中Controller已与View重新结合。它们看起来像是奇怪的家伙,但是,该程序的大多数逻辑 都在
处理用户或数据:至少在平流层,这似乎是有道理的。

从鸟瞰图:

建筑

模型视图控制器

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

  1. 模型 〜>封装数据。通知View和Controller对基础数据的任何更改。这将导致分别更新输出或可用命令的显示。
  2. 查看 〜>将模型的相关输出显示给用户。
  3. Controller〜 >封装用户交互,并通知Model和View相关事件。

模型视图

  • Graphics View framework (1) 〜>将QGraphicsScene内部的所有内容(包括嵌入式QWidgets等)表示为QGraphicsItem(或其派生类),包括用于嵌入窗口小部件的代理类。据说这些项目经过了高度优化,并且集成OpenGL支持是一线的,这很好。

这种设计模式将Controller放在View内部。这样,视图就能够处理用户交互的全部。具体来说,这就是信号和插槽机制。

用户互动管理

回呼

信号和插槽

..... 对不起,但我现在必须退出。我会继续添加。

实际例子

例如,您可以从

itemviews/editabletreemodel
示例中获取树视图,然后从示例中交换文件系统模型(
QFileSystemModel
),从而
itemviews/dirview
获得目录树的完整(工作)视图。挺时髦的。

因此,您可以从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)

…它就可以了。惊人。

下一步(就我而言)(*我认为)是实现一个自定义模型,然后我将同时使用多个视图,但是我不知道这是否适合您的用例。

资源资源

这是我在旅途中发现的一些宝石。希望他们能帮助您。

这是有关Qt5的Model-View的教程。(1)这是来自Qt5官方文档的非常详细的文档。在Qt5站点上可以找到大量有用的文档。请记住,它是针对Qt5(C
++库)的,但是通读的区别很小(无论如何,PyQt5官方文档都指向那里)。

该PDF包含PyQt4的Model-View框架的快速高级概述。请注意,它是针对PyQt4(而不是PyQt5)的,但实际上是针对Python(而不是C
++)的,我发现它很快教会了我很多东西。

我刚刚开始使用Graphics View,并且发现有关Graphics View framework的本教程非常有帮助。这与

qtdemo
示例代码中用于生成某些平滑效果的视图相同。我将稍作更新。

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

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

这是Qt5 API中所有功能的完整列表。

正如katsh在另一个答案的注释中指出的那样,这是GitHub上PyQt5.2.1的示例代码的链接。

此外,示例代码的副本随附在您的发行版中,可以在以下位置找到:

%PYTHON_HOME%Libsite-packagesPyQt5examples

如果您使用的是PyDev(Eclipse),则可以通过在PyDev Package Explorer或Navigator =:> Run As =:>
Python Run中右键单击示例的主模块文件来运行示例。

以我的看法(不是这样),最好的是:

%PYTHON_HOME%Libsite-packagesPyQt5examplesqtdemoqtdemo.py

在我目前的项目中,我正在对该示例进行逆向工程。如果您检查出来,就会明白原因。未完待续.. ;)

请享用!



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5655584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存