python gui pyqt5,Python GUI设计PyQt5从入门到实践 pdf
1 pyqt 5概述
PyQt5是基于图形编程框架Qt5的Python语言实现,它由一系列Python模块组成。
PyQt5的官方网站是www.riverbankcomputing.co.uk。
PyQt5模块介绍的官网地址是http://pyqt.SourceForge.net/docs/pyqt5/introduction.html,如图A-1。
PyQt5中包含的主要模块如下。
QtCore模块3354涵盖了软件包的核心非GUI功能,包括时间、文件、目录、数据类型、文本流、链接、QMimeData、线程、进程等等。
QtGui模块3354包括但不限于窗口集合、事件处理、2D图形、基本图像和界面、字体和文本类别。
Qt模块——包含一组UI元素控件,用于构建符合系统风格的类接口。您可以选择在安装过程中是否使用此功能。
QtMultimedia模块3354包含一组类库,用于处理多媒体事件和访问相机、语音设备、无线电功能等。通过调用API接口。
Qt模块——包含一个类库,用于处理蓝牙活动,包括设备扫描、连接和交互。
QtNetwork模块3354包含一个网络编程的类库,通过提供方便的TCP/IP和UDP c/s代码集,使得基于Qt的网络编程变得简单。
Qt模块——用于获取位置信息,可以通过多种方式定位,包括但不限于卫星、无线网络和文本信息。该模块通常用于网络地图定位系统。
Enginio模块——用于构建客户端app应用库,并在运行时访问Qt云服务托管的APP应用。
QtwebSockets模块——包含一组用于实现webSockets协议的程序。
QtWebKit模块——包含一个类库,用于实现基于WebKit2的web浏览器。
QtWebKitWidgets模块——提供了一组类库来实现用组件包构建的基于WebKit1的web浏览器。
Qt模块——包含一个处理QtXml的类库,为SAX和DOM API的实现提供函数。
QtSvg模块——通过一组类库提供了显示矢量图形文件内容的函数。
QtSql模块——提供了数据库对象的接口。
QtTest模块——包含了对pyqt5APP应用进行单元测试和调试的功能。
Qt模块——包含创建和显示可搜索文档的类。
Qt模块——使用QtOpenGL库渲染3D和2D图形。该模块无缝集成了Qt GUI库和OpenGL库。
QtXmlPatterns模块3354中包含的类为XML和定制数据模型提供了Xquery和XPath支持。
QtDesigner模块3354包含可以使用PyQt扩展QtDesigner的类。
Qt——将上述模块的类合并为一个模块。这样做的好处是,你不必担心哪些模块包含哪些特定的类。缺点是加载到整个Qt框架中,增加了APP应用的内存消耗。
Uic模块3354包含用于处理的类。ui文件。这个文件是由Qt Designer创建的,用来描述整个或部分用户界面。可以编译。ui文件到。py文件并被其他Python程序调用。
PyQt5增加了很多模块,官网可以看到。基本上只看模块名就知道一般是有帮助的。PyQt5没有声子模块。使用QtMultimedia处理媒体。
此外,PyQt5中新加入的QtWebEngineWidgets模块替代了过时的QtWebKit,但QtWebKit依然存在,新模块占用内存更多。用哪一个,由读者自己决定。
. 2pyqt5主要类介绍
PyQt5 API有超过620个类和6000个函数。这是一个适用于所有主流操作系统的跨平台工具包,包括Windows、Linux和Mac OS。
QObject类:类层次结构中的顶级类,也是所有PyQt对象的基类。
QPaintDevice类:所有可渲染对象的基类。
QApplication类:用于管理图形用户界面APP的控制流程和主要设置。包含主事件循环,用于处理和调度来自窗口系统和其他资源的所有事件。它还处理应用程序的初始化和退出,提供对话管理,并处理大多数系统和应用程序范围的设置。
组件类:所有用户界面对象的基类。QDialog和QFrame类继承自q component类,它们有自己的子类系统“子类系统”。
QFrame类:带有框架的窗口控件的基类。也用于直接创建空的简单框架,但通常使用QHBox或QVBox。这是因为放置在框架上的窗口控件可以自动放置。
QMainWindow类:提供菜单栏和导航窗口。
口(如工具栏)和主应用程序窗口的状态栏。
QDialog类:最常见的顶层窗口。如果一个小部件没有嵌入到父小部件中,它被称为顶级小部件。通常,顶级窗口控件是一个带有框架和标题栏的窗口。在Qt中,QMainWindow和QDialog的不同子类是最常见的顶层窗口。
图A-2到图A-6显示了PyQt 5中的重要类及其继承关系。
上面的类图是使用UML建模工具Edraw UML Diagram绘制的。例如,在图A-2所示的类图中,每个方框代表一个PyQt 5类,类名显示在方框的第一行,方框之间的继承关系用符号表示。继承是指一个类(称为子类)继承另一个类(称为父类)的功能,子类的新功能可以通过继承来添加。
以下是常用的控件。
QLabel控件:用于显示文本或图像。
QLineEdit窗口控件:提供单页单行文本编辑器。
QTextEdit窗口控件:提供单页多行文本编辑器。
QPushButton窗口控件:提供一个命令按钮。
Adibutton控件:提供一个QRadioButton和一个文本或像素映射标签。
QCheckBox窗口控件:提供了一个带有文本标签的复选框。
QspinBox控件:允许用户选择一个值,或者通过按向上/向下键来增加/减少当前显示的值,或者直接在输入框中输入值。
QScrollBar窗口控件:提供水平或垂直滚动条。
QSlider控件:提供垂直或水平滑块。
QComboBox控件:用于弹出列表的组合按钮。
QMUBAR控件:提供了一个水平菜单栏。
QStatusBar控件:提供一个适合呈现状态信息的水平条,通常放在QMainWindow的底部。
QToolBar控件:提供了一个工具栏,可以包含多个命令按钮,通常放置在QMainWindow的顶部。
QListView控件:可以显示和控制可选的多选列表,可以设置ListMode或IconMode。
QPixmap控件:可以在绘图设备上显示图像,通常是在QLabel或QPushButton类中。
Qdialog控件:对话框窗口的基类。
QWidget是所有用户界面类的基类,它可以接收所有鼠标、键盘等系统窗口事件。未嵌入父窗口的小部件将被称为窗口。当然,它也可以使用setWindowFlags(Qt。WindowFlags)函数来设置窗口的显示效果。QWidget的构造函数可以接收两个参数,第一个是这个窗口的父窗口;第二个参数是窗口的标志,即Qt。WindowFlags根据父窗口,决定Widget是嵌入父窗口还是作为独立窗口调用,并根据标志设置Widget窗口的一些属性。
QMWindow(主窗口)一般是应用程序的框架。在主窗口中,您可以添加所需的小部件,如菜单栏、工具栏、状态栏等。主窗口通常用于提供一个大的中央窗口控件(如文本编辑或绘图画布)以及周围的菜单栏、工具栏和状态栏。QMainWindow往往是继承的,这样更容易封装中控、菜单栏、工具栏和窗口状态。您也可以使用Qt Designer来创建主窗口。
3 q应用程序类
QApplication类用于管理图形用户界面应用程序的控制流和主要设置。可以说,QApplication是PyQt整个后台管理的命脉。任何用PyQt开发的图形用户界面应用程序都有一个QA application对象。
在PyQt中,您可以通过下面的代码加载必要的模块来获得QApplication类。
来自PyQt5。QtWidgets导入QApplication
PyQt的应用实例包含了QApplication类的初始化,通常放在Python脚本的if name==main :语句之后,类似于C的main函数,作为主程序的入口。因为QApplication对象已经被初始化了很多,所以必须在创建窗口之前创建它。
QApplication类也可以处理命令行参数。当QApplication类初始化时,需要引入参数sys.argv。Sys.argv是命令行中的参数列表。Python脚本可以从shell中运行。例如,用鼠标双击qtSample.py启动PyQt应用程序。引入sys.argv后,可以从命令行启动程序。例如,在命令行中输入python qtSample.py可以达到同样的效果。
QApplication类的初始化可以参考以下脚本参考。该应用程序的总体框架是:
if name==main :
app=QA application(sys . argv)
#接口生成代码.
sys.exit(app.exec_())
sys.exit()函数可以结束一个应用程序,并使它退出主循环。
QApplication采用事件循环机制。QApplication初始化后,进入应用程序主循环,开始事件处理。主循环从窗口系统接收事件,并将这些事件分配给应用程序的控件。当调用sys.exit()函数时,主循环将结束。
PyQt 5的应用是事件驱动的,比如键盘事件,鼠标事件等。如果没有任何事件,应用程序将处于睡眠状态。主循环控制应用程序何时进入睡眠和醒来。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。