有专门针对PyQt5的教程吗?

2024-05-29 11:17:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

到目前为止,我只找到了一些PyQt4教程,由于Qt5中不再支持从Qt4到Qt5的某些内容,例如SIGNALSLOT,所以最好有PyQt5的特定教程。

有人能提供一个如何使用PyQt5启动GUI开发的教程吗?


Tags: 内容signal情况gui教程pyqt5slotpyqt4
3条回答

当我继续深入PyQt5的深处旅行时,我将继续用我发现的一些更闪亮的宝藏来更新这个答案。

这就是说,我现在对PyQt5的一个快速介绍进行一个“粗略的草稿”尝试。我还将提供有用资源的链接。我也是这个框架的新手,我会详细说明我认为什么是使用它的一个好策略,因为我想这个策略。可能还有其他好的策略,所以如果有人有什么要补充的,请留下评论。这是一项正在进行的工作。


策略

我从另一个答案中的示例代码中学到了很多东西,但是这些示例并不能帮助我们理解PyQt5的深层魔力。有很多魔力的框架(PyQt5、Django、SQLAlchemy,…)非常棒,因为大量的枯燥工作被抽象出来了。另一方面,并不总是清楚到底发生了什么,或者你应该怎么做。

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

  • QtDesigner:在那些键盘着火的日子里,安装包中调用了rocking'GUI生成器。当您看到这产生的代码时(可能只在社区版本中?),你会明白为什么这个可能不是看起来的灵丹妙药。

  • QML:灵丹妙药的另一个候选者:用格式化的JSON构建声明式GUI。嗯。

  • Qt Quick:QML的框架。到目前为止,这似乎很容易,但不要被这些东西所吸引。似乎总是归结于手工学习。

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

通过使用实现模型视图设计模式的类集合,PyQt5中的编码大大简化。模型视图是模型视图控制器(MVC)的一种发展,在MVC中,控制器与视图重新结合。他们看起来像是奇怪的同床异梦,但是,程序的大部分逻辑是处理用户或数据:这似乎有一定的意义,至少在平流层层面上是这样。

从鸟瞰:

体系结构

模型视图控制器

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

  1. Model~>;封装数据。通知视图和控制器基础数据的任何更改。这将分别导致输出或可用命令的显示更新。
  2. 视图~>;向用户显示模型的相关输出。
  3. 控制器封装用户交互,并将相关事件通知模型和视图。

模型视图

  • The Graphics View Framework(1)~>;将qgraphicscene中的所有内容(包括嵌入的QWidgets等)表示为qgraphicscetem(或其派生),包括用于嵌入小部件的代理类。这些项目被认为是高度优化的,集成OpenGL支持是一个简单的过程,这很好。

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

用户交互管理

回调

信号和插槽

。。。。。**对不起,我必须现在签字。我会回来继续补充。**

实例

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

所以,你可以从edita上获取代码bletreemodel示例:

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)

…而且很管用。太神了。

下一步(在我的例子中)是实现一个定制模型,然后我将同时使用多个视图,但我不知道这是否适合您的用例。

资源

这是我在旅行中发现的一些宝石。希望他们能帮到你。

This is a tutorial on Model-View for Qt5.(1)这是来自官方Qt5文档的非常详细的文档。在Qt5网站上可以找到大量有用的文档。记住,它是QT5(C++库),但是差别是微不足道的(并且PYQT5官方文档指向了)。

^ a7}注意,它是针对pyqt4(不是pyqt5),但实际上是针对python(与C++相反),并且我发现它很快教会了我很多。

我刚刚开始使用图形视图,发现this tutorial on the Graphics View Framework非常有用。这与qtdemo示例代码中用于生成一些平滑效果的视图相同。我会马上更新。

This is a complete list of all of the Qt5 Modules.

This is a complete list of all of the Qt5 Classes.

This is a complete list of all functions in the Qt5 API.

正如katsh在另一个答案的评论中指出的,here is a link to the example code for PyQt5.2.1 on GitHub

此外,示例代码的副本随发行版一起提供,可以在以下位置找到:

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

如果使用PyDev(Eclipse),只需在PyDev包资源管理器或Navigator=:>;run As=:>;Python run中右键单击示例的主模块文件,就可以运行示例

在我看来,最好的办法是:

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

在我目前的项目中,我正在进行这个例子的逆向工程。如果你去看看,你会明白原因的。待续。。;)

享受吧!

找PyQt5教程已经有一段时间了?别再看了!你在网上找不到很多。

不是真正的教程,但是在下面的路径下,非常简单的基本脚本

/python/lib/site-packages/PyQt5/examples

您可以在30文件夹中找到从初学者到高级的100示例,包括基本窗口、菜单、选项卡、布局、网络、OpenGL等

相关问题 更多 >

    热门问题