随着我深入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重新结合。它们看起来像是奇怪的家伙,但是,该程序的大多数逻辑 都在
处理用户或数据:至少在平流层,这似乎是有道理的。
从鸟瞰图:
建筑模型视图控制器
这种广泛使用的设计模式将应用程序分为三层:
- 模型 〜>封装数据。通知View和Controller对基础数据的任何更改。这将导致分别更新输出或可用命令的显示。
- 查看 〜>将模型的相关输出显示给用户。
- 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
在我目前的项目中,我正在对该示例进行逆向工程。如果您检查出来,就会明白原因。未完待续.. ;)
请享用!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)