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

目录

一、什么是PyQt

二、应用和窗口

1. QApplication

2. QWidget

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

1. QT Designer

2. pyuic


一、什么是PyQt

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

PyQt是QT的一组python绑定,是RiverBank(PyQt的开发商)使用SIP方案实现的。PyQt的底层都是C/C++,所以PyQt的运行效率并不差。

PyQt是QT的子集,所以在学习的时候就照着QT的官方文档学习即可。

QT官方文档

PyQt中可用的类很多,它们被分成了多个模块,日常使用最多的主要有:

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

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

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

QT模块集合

二、应用和窗口

在一个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()。它会跟踪这些属性,以防用户全局更改桌面,例如通过某种控制面板。

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

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

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

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

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

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

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

QApplication详细介绍

2. QWidget

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

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

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

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_())

 代码说明:

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包

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

这里对$ProjectFileDir$做下说明:

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

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

2. pyuic

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

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

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

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

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

引用\[1\]:本篇就带着这思路,带您一起探索 PyQt 5: PyQt 5 与 Tkinter 的孰好孰坏;PyQt 5 & QTDesigner的环境部署;PyQt 5 基本组件介绍;QTDesigner 的使用指南;PyQt 5 信号与槽函数机制;PyQt 5 UI 主界面交互;PyQt 5打造属于自己的应用程序; 实战包括 :翻译器、下载器、黑客工具关于 PyQt 5 的未来展望。 引用\[2\]:pyqt5使用记录涉及pyqt界面控件的基本介绍,使用designer设计界面ui,并将其转化为py代码。关于界面主要实现radioButton的互斥选中事件、comboBox的选中事件(依据list添加item)、pushButton的单击事件、槽函数自动绑定、图片的拖入显示。 引用\[3\]:2、执行以下代码 from PyQt5.QtWidgets import QMainWindow, QApplication from mainview import Ui_MainWindow class MyWindows(QMainWindow): def __init__(self): super().__init__() # 使用ui文件导入定义界面类 self.ui = Ui_MainWindow() self.ui.setupUi(self) # 初始化界面 self.ui.pushButton.clicked.connect(self.click_test) def click_test(self): print('我被点击了!') if __name__ == "__main__": app = QApplication(\[\]) test = MyWindows() test.show() # 去掉ui app.exec_() 问题:pyqt工程师是干啥的 回答: Pyqt工程师主要负责使用PyQt框架进行软件开发。PyQt是一个用于创建图形用户界面(GUI)的Python库,它是基于Qt框架的Python绑定。PyQt工程师使用PyQt库来设计和开发各种应用程序,包括但不限于翻译器、下载器和黑客工具等。他们使用PyQt的各种组件和功能来创建用户友好的界面,并实现与用户的交互。他们还可以使用PyQt的信号与槽函数机制来实现事件处理和数据传递。总之,PyQt工程师的主要职责是利用PyQt库开发高质量的GUI应用程序。 #### 引用[.reference_title] - *1* [[PyQt5]一个后台工程师的界面情结](https://blog.csdn.net/vevenlcf/article/details/83962485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于pyqt5实现一款简单的界面软件(radioButton、comboBox、pushButton、图片显示)](https://blog.csdn.net/a486259/article/details/131564563)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值