PyQt入门(1)-PyQt的简单介绍

QT是一个跨平台C++图形用户界面应用程序开发框架。

PyQt是python语言和QT的成功融合。PyQt实现了一个python的模块集,它有超过300个类,将近6000个函数和方法,是一个多平台的工具包,可以允许在所有主要的操作系统上。

因为PyQt中可用的类很多,它们被分成了几个模块:

QtCore:包含核心的非GUI相关的类,如信号、时间、文件和目录、各种数据类型、流、网址、MIME类型、线程等

QtWidgets:包含图形组件相关的类,例如按钮、窗体、状态栏、工具栏、滚动条、布局等

QtGui:提供了用于窗口系统集成、事件处理、OpenGL和OpenGL ES集成、2D图形、基本成像、字体和文本的类。这些类由Qt的用户界面技术内部使用,也可以直接使用,例如使用低级OpenGL ES图形API编写应用程序。

QtCore和QtWidgets应该算是后面会用的最多的模块了,在一个GUI程序中,一个窗口说白了就是通过N个widget堆集起来的,然后加上相应的业务逻辑,widget就从QtWidgets中取,相关逻辑需要的类就从QtCore中取。

一、应用和窗口

在一个GUI程序中,这是核心的两个概念。可以简单的说,一个GUI程序就是一个包含N个窗口的应用。

在PyQt中QApplication是应用,QWidget是窗口。

1. QApplication

QApplication继承自QGuiApplication,专门为QGuiApplication提供基于QWidget的应用程序所需的一些功能,处理特定于QWidget的初始化。

对于任何使用Qt的GUI应用程序,无论应用程序在任何给定时间是否具有0、1、2或更多窗口,都有且只有一个QApplication对象。对于非基于QWidget的Qt应用程序,请改用QGuiApplication,因为它不依赖于QtWidgets库。

一些GUI应用程序提供了一种特殊的批处理模式,即在没有手动干预的情况下为执行任务提供命令行参数。在这种非GUI模式下,实例化一个普通的QCoreApplication通常就足够了,以避免不必要地初始化图形用户界面所需的资源。

QApplication的主要职责范围是

它使用用户的桌面设置初始化应用程序,如palette()、font()和doubleClickInterval()。它会跟踪这些属性,以防用户全局更改桌面,例如通过某种控制面板。

它执行事件处理,这意味着它从底层窗口系统接收事件,并将它们分派到相关的小部件。通过使用sendEvent()和postEvent(),您可以将自己的事件发送到小部件。

它解析常见的命令行参数,并相应地设置其内部状态。

它定义了应用程序的外观,并将其封装在一个QStyle对象中。这可以在运行时使用setStyle()进行更改。

它提供了用户可以通过translate()看到的字符串的本地化。

它提供了一些好用的对象,比如desktop()和clipboard()。

它知道应用程序的窗口。您可以使用widgetAt()询问哪个小部件位于某个位置,获取topLevelWidgets()和closeAllWindows()的列表,等等。

它管理应用程序的鼠标光标处理。

2. QWidget

QWidget是用户界面的基石,它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制自己。每个QWidget都是矩形的,并且按照Z-order进行排序。

未嵌入父QWidget的QWidget称为窗口。通常,窗口有一个窗体和一个标题栏,当然也可以使用合适的window flags创建只有纯窗体的窗口。在Qt中,QMainWindowQDialog的各种子类是最常见的窗口类型。

QWidget是所有其他界面组件的父类。

下面是一个最简单的GUI程序代码:

from sys import argv, exit
from PyQt5.QtWidgets import QApplication, QWidget


if __name__ == '__main__':
    app = QApplication(argv)

    main_window = QWidget()
    main_window.show()

    exit(app.exec_())

PyQt入门(1)-PyQt的简单介绍_第1张图片

 代码说明:

app = QApplication(argv)  :根据命令行参数实例化一个QApplication


main_window = QWidget():

main_window.show()  : 创建一个窗口并显示

app.exec_()  :执行应用的主循环

exit()  : 退出GUI程序

这里说下app.exec()和app.exec_()的区别:

在 Python 3 之前,exec是个保留的关键字,因此 PyQt 开发人员为其添加了下划线。从 Python 3 开始,exec不再是关键字了,因此在 PyQt5 中提供不带下划线的版本以与 C++ 文档保持一致是有意义的,但保留exec_()以实现向后兼容性。所以对于带有 Python 3 的 PyQt5,exec()和exec_()是相同的。对于较旧的 PyQt,只有exec_()可用。

二、PyCharm安装外部工具Qt designer和pyuic

1. QT Designer

对最新版的PyQt5,QT Designer是不在pyqt5包里面的,需要再单独安装pyqt5-tools包

PyQt入门(1)-PyQt的简单介绍_第2张图片

 最新版已经没有designer.exe了,而是pyqt5-tools.exe,带参数designer,启动的就是QT Designer了。

这里对$ProjectFileDir$做下说明:

这是PyCharm的内置变量,我们点击第6步的 +,就会出现以下界面

PyQt入门(1)-PyQt的简单介绍_第3张图片

 每个变量代表什么都有说明。

2. pyuic

pyuic的作用是把QT Designer生成的ui文件转换成py文件,具体配置步骤如下

PyQt入门(1)-PyQt的简单介绍_第4张图片

 这个工具并不是一个独立的exe,其实是用python执行PyQt5.uic.pyuic模块,整个命令格式是:

python -m PyQt5.uic.pyuic xxx.ui -o xxx.py

所PyCharm中配置的完整参数就是:

-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

你可能感兴趣的:(PyQt5入门,pyqt)