当前位置: 首页 > 面试题库 >

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

公西星海
2023-03-14
问题内容

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

到目前为止,我只找到了一些PyQt4教程,并且由于从Qt4到Qt5的变化,例如事实,SIGNAL并且SLOTQt5中不再支持,因此为PyQt5设置特定的教程会很好。

有人可以提供有关如何使用PyQt5启动GUI开发的教程吗?


问题答案:

随着我深入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%\Lib\site-packages\PyQt5\examples

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

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

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

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

请享用!



 类似资料:
  • 我正在编写一个在输入面板中包含多个JTextFields和2个JTextAreas的程序。我有一个提交按钮在底部。我设置了它,所以当用户在每个字段中键入某些内容(包括JTextAreas)并按下Enter键时,它会更新一个文本文件,当他们按下submit按钮时,它会更新该文件,然后在本地目录中输出该文件的新版本。 如果用户在任一字段中按Enter键,它将验证他们的输入,但是,我希望在他们按subm

  • 问题内容: 我要重新安装并在我的Ubuntu Lucid上。由于这些东西带有相当多的依赖性,所以我想知道是否有一个全面的测试套件来检查新安装是否真的有效。 当然,我只能拿一堆脚本并逐个运行它们,以查看它们是否继续运行,但这无法避免将来在某些情况下我会尝试使用以前没有使用过的脚本的情况。之前不使用它会破裂(或者更糟的是,默默地产生废话)。 问题答案: 是。这两个软件包都有一个方法。 请注意,如果您没

  • 文件有两个驱动程序:(运行时间为~3秒)和(运行时间为~83秒),当使用d专门化用-O3编译时。 其核心是:对于测试,加法代码被专用于s等上的向量,而对于则使用通用向量代码。在第10行,您可以看到GHC编写了的专用版本,而不是第167行的通用版本。专门化的规则在第225行。我相信这条规则应该会在270号线上开火。(调用,因此是应该专门化的地方。) 我的目标是通过专门化使与一样快。我找到了两种方法:

  • PyQt5中文教程,翻译自 zetcode,项目地址:https://github.com/maicss/PyQt5-Chinese-tutoral 这个教程比较好的地方是,能讲解每一段代码的含义。 虽然PyQt的函数命名已经非常语义化了,但是对于新手来说,有这一步还是更好的。 所以我选择了翻译这篇教程,希望能给刚入门的你带来帮助。

  • 任何指导都非常感谢! 谢谢,A。

  • 本文向大家介绍专门为初学者编写的正则表达式入门教程,包括了专门为初学者编写的正则表达式入门教程的使用技巧和注意事项,需要的朋友参考一下 这是一篇翻译文章。我学过很多次正则表达式,总是学了忘,忘了学,一到用的时候还是只能靠搜索引擎。 这回看到这个正则教程,感觉非常惊喜。尝试翻译了一遍,译得不好,大家可以看原文,很容易理解。 原文地址:https://refrf.shreyasminocha.me/

  • 问题内容: 具有java.sql.ResultSet的实例,如何检查它是否包含名为“ theColumn”的列? 问题答案: 您可以使用ResultSetMetaData遍历ResultSet列,并查看列名是否与指定的列名匹配。 例:

  • 我有一个通用算法,需要访问其模板类型的特征。有一个特征类可以专门用于提供这些特征。 在我的类中使用此算法时,我想将其与类中定义的私有类型一起使用。 然而,专门化只能发生在或全局范围内,而我的类是不可访问的。 是否有可能以某种方式专门化具有私有类型的模板,至少在可访问此类型的范围内? 也许可以将这个专门化声明为一个类?