找回密码
 会员注册
查看: 20|回复: 0

Python第三方库PyQt5安装与应用

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71625
发表于 2024-9-9 14:20:34 | 显示全部楼层 |阅读模式
文章目录引言安装PYQT5基于Pyqt5的简单桌面应用常用的方法与属性QtDesigner工具使用与集成窗口类型QWidget和QMainWindow区别UI文件加载方式直接加载UI文件的方式显示窗口转化py文件进行显示窗口PyQt5中常用的操作信号与槽的设置绑定页面跳转引言PyQt5是一个流行的Python库,用于创建桌面应用程序。它提供了对Qt应用程序框架的访问,使得开发者可以利用Qt的强大功能来构建跨平台的应用程序。安装PYQT5首先,你需要确保你的计算机上已经安装了Python。可以通过在命令行中输入以下命令来验证Python是否已安装:python--version1安装PyQt5,打开命令行工具,使用pip命令安装PyQt5pipinstallpyqt51注意:如果你在安装过程中遇到网络问题,导致下载失败,可以使用国内第三方镜像网站,作为请求服务器。这里推荐的是清华大学的TUNA镜像站。pipinstallpyqt5-ihttps://pypi.tuna.tsinghua.edu.cn/simple1此时Pyqt5已经安装完成,因为本篇博客需要用到QtDesigner工具,为了使用PyQt5的QtDesigner工具,需要安装PyQt5的工具包。可以使用以下命令:pipinstallpyqt5-tools-ihttps://pypi.tuna.tsinghua.edu.cn/simple1QtDesigner是一个图形用户界面(GUI)设计工具,它允许开发者通过拖放组件的方式来设计应用程序的用户界面,而不需要编写大量的代码。安装完成后,可以通过以下命令查看是否安装成功:piplist1注意:以上安装方式建议在Python的虚拟环境下进行。基于Pyqt5的简单桌面应用开发一个Pyqt5的桌面应用必须要包含两个类:QApplication(可执行程序):它负责管理整个应用程序的控制流程,包括事件循环和应用程序的生命周期。每个PyQt5应用程序都必须创建一个QApplication对象,它通常在应用程序的main函数中初始化。QWidget(窗口):是所有控件的基类,代表一个窗口或窗口内部的一个控件。你可以使用QWidget来创建自定义窗口或对话框。这两个类都在PyQt5.QtWidgets模块下。importsysfromPyQt5.QtWidgetsimportQApplication,QWidgetif__name__=='__main__':#创建QApplication类的实例app=QApplication(sys.argv)#创建一个窗口window=QWidget()#设置窗口的尺寸window.resize(500,500)#设置窗口的window.setWindowTitle("HelloWorld")#显示窗口window.show()#进入程序的主循环sys.exit(app.exec_())12345678910111213141516在PyQt5应用程序中,sys.exit(app.exec_())是一个常见的代码模式,它用于启动应用程序的事件循环,并在事件循环结束时正确退出应用程序(相当于监测)。app是QApplication类的一个实例,它负责管理整个应用程序的生命周期。exec_()是QApplication的一个方法,它的作用是启动应用程序的事件循环。这个方法会阻塞当前线程,直到应用程序接收到退出信号或调用QApplication.quit()。常用的方法与属性QWidget是PyQt5中所有控件和窗口的基类。它提供了丰富的方法和属性,使得开发者可以灵活地定制窗口的外观和行为。resize(width,height):设置窗口的尺寸。setMinimumSize(width,height):设置窗口的最小尺寸。setMaximumSize(width,height):设置窗口的最大尺寸。setFixedSize(width,height):将窗口尺寸固定为指定值,不允许用户调整。setWindowTitle(title):设置窗口的。setStyleSheet(styleSheet):应用CSS样式到窗口,可以改变窗口的背景颜色、字体等。setWindowIcon(icon):设置窗口的图标。show():显示窗口。hide():隐藏窗口。close():关闭窗口,并触发closeEvent。QtDesigner工具使用与集成QtDesigner是一个功能强大的图形用户界面(GUI)设计工具,它是Qt框架的一部分,并与PyQt5紧密集成。通过QtDesigner,开发者可以可视化地设计应用程序的用户界面,而无需编写大量的代码。此工具包含在第三方包pyqt5-tools下,执行安装(install)之后,该工具会自动生成在对应安装的Python环境中:Lib→\rightarrow→site-packages→\rightarrow→qt5_applications→\rightarrow→Qt→\rightarrow→bin目录下的designer.exe可执行文件,双击运行即可。选择一个窗口,创建即可,之后选择自己需要的控件进行拼装即可,这里不对简单步骤进行过多讲解。使用PyCharm集成QtDesigner工具,点击PyCharm的设置(Settings),Tools下的外部工具(ExternalTools),进行添加即可。窗口类型在PyQt5中,常见的窗口类型主要有三种:QMainWindow、QWidget和QDialog。每种窗口类型都有其特定的用途和特点。QMainWindow:QMainWindow是最常见的主窗口类型,适用于需要包含菜单栏、工具栏、状态栏和栏的应用程序。它提供了一个标准的主窗口布局,可以方便地添加各种控件和功能。(可以包含菜单栏、工具栏、状态栏和栏。)QWidget:QWidget是一个通用的窗口基类,可以用作顶层窗口或嵌入到其他窗口中。它是所有用户界面对象的基类,适用于不需要菜单栏、工具栏和状态栏的简单窗口。QDialog:QDialog是对话框窗口的基类,通常用于执行短期任务或与用户进行交互。对话框可以是模态的(阻塞其他窗口的输入)或非模态的(不阻塞其他窗口的输入)。QWidget和QMainWindow区别QWidget和QMainWindow都是PyQt5中重要的窗口类,它们在构建GUI应用程序时扮演着基础的角色。理解它们之间的关系和区别对于设计有效的用户界面至关重要。QWidgetQWidget是所有控件的基类,提供了通用的容器功能。它可以用来创建各种控件和组件,如按钮、文本框、标签等。QWidget可以作为窗口使用,但它不具备窗口的装饰(如栏、边框等)。通常用作其他控件的容器,或作为自定义控件的基类。QMainWindowQMainWindow是QWidget的子类,专门用于创建应用程序的主窗口。它提供了窗口装饰和高级窗口功能,如菜单栏、工具栏、状态栏和中央部件(centralwidget)。QMainWindow支持多文档界面(MDI),允许在主窗口内部打开多个子窗口。它通常作为应用程序的主窗口,可以包含多个QWidget或其他控件。QMainWindow继承自QWidget,这意味着QMainWindow拥有QWidget的所有属性和方法。UI文件加载方式直接加载UI文件的方式显示窗口在PyQt5中,uic(用户界面编译器)模块是一个强大的工具,它允许开发者将QtDesigner设计的.ui文件加载到Python应用程序中。这为快速开发GUI应用程序提供了极大的便利。uic.loadUi函数可以动态加载.ui文件,无需将.ui文件转换为Python代码。确保.ui文件的路径是正确的,如果路径错误,uic.loadUi将无法找到文件。importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QMainWindowfromPyQt5importuic#假设你的.ui文件已经按照Python文件的方式生成,并且命名为'my_design.ui'ui_filename='./ui/untitled1.ui'classMainWindow(QMainWindow):def__init__(self):super(MainWindow,self).__init__()#加载.ui文件uic.loadUi(ui_filename,self)if__name__=='__main__':#创建QApplication类的实例app=QApplication(sys.argv)#创建一个窗口window=MainWindow()#设置窗口的window.setWindowTitle("HelloWorld")#显示窗口window.show()#进入程序的主循环sys.exit(app.exec_())123456789101112131415161718192021222324因为这里在使用工具的时候,选择的是MainWindow窗口,所以对应的MainWindow类集成QMainWindow。ui文件存放在当前项目的ui文件夹下。转化py文件进行显示窗口使用命令,将ui文件转化为py文件,python-mPyQt5.uic.pyuic是转换.ui文件的主要命令,其基本格式如下:python-mPyQt5.uic.pyuicinput.ui-ooutput.py1其中:input.ui是QtDesigner生成的.ui文件。output.py是转换后的Python代码文件。参数说明-o:指定输出文件的路径名称。-x:如果指定,转换器会执行UI文件并生成可执行的Python代码。-from-imports:允许转换器从导入的模块中读取UI文件。或者可以使用pyuic命令进行ui文件转换,pyuic5是PyQt5提供的一个命令行工具,用于将.ui文件转换为Python代码。这个工具是uic模块的一部分,可以通过命令行直接调用。基本的命令格式如下:pyuic5input.ui-ooutput.py1常用选项-x或--execute:执行生成的Python代码,生成的代码将是一个可执行的脚本,而不仅仅是一个类定义。-o或--output:指定输出文件的路径名称。之后,导入自定义UI类,将生成的py文件导入到主py里面,例如:frompyui.pyui1importUi_MainWindow1进行设置用户界面,创建Ui_MainWindow的实例,并调用它的setupUi方法,将QtDesigner中的设计应用到window实例上。ui=Ui_MainWindow()ui.setupUi(window)12注意:其中实例化window窗口的类,要和QtDesigner工具选择的窗口一样、代码展示importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QMainWindowfrompyui.pyui1importUi_MainWindowif__name__=='__main__':#创建QApplication类的实例app=QApplication(sys.argv)#创建一个窗口window=QMainWindow()#将py文件添加到窗口ui=Ui_MainWindow()ui.setupUi(window)#显示窗口window.show()#进入程序的主循环sys.exit(app.exec_())1234567891011121314151617PyQt5中常用的操作信号与槽的设置绑定在PyQt5中,信号与槽(signalsandslots)机制是实现控件间交互的核心机制。信号是当某个事件发生时由控件发出的,而槽是一个可以响应信号的函数。基本概念信号:信号是由控件在特定事件发生时发出的。例如,按钮被点击、文本框内容改变等。槽函数:槽函数是响应信号的函数,可以是任何可调用的对象,包括普通函数、类的方法等要连接一个信号到一个槽函数,可以使用QObject的connect方法。以下是一个简单的例子,展示了如何连接QPushButton的clicked信号到一个槽函数:fromPyQt5.QtWidgetsimportQApplication,QWidget,QPushButtondefon_any_button_clicked():print("任意按钮被点击了!")app=QApplication([])window=QWidget()button1=QPushButton("按钮1",window)button2=QPushButton("按钮2",window)button1.clicked.connect(on_any_button_clicked)button2.clicked.connect(on_any_button_clicked)window.show()app.exec_()12345678910111213141516一个信号也可以连接到多个槽函数,当信号被触发时,所有连接的槽函数都会被依次调用。此外还可以通过QtDesigner工具进行信号与槽的设置。下列例子是通过控制复选框,进行输入框的显示与隐藏。页面跳转在开发桌面应用程序时,页面跳转是一个常见的需求。无论是从登录页面跳转到主页面,还是从一个功能页面跳转到另一个功能页面,理解和掌握页面跳转的思路和流程是至关重要的。核心思路是创建和管理多个窗口实例。初始化当前页面:在程序启动时,首先初始化当前页面的UI组件和布局。设置好页面的各个控件,并连接触发跳转事件的控件(例如按钮)的点击事件到相应的处理函数。处理跳转事件:当用户点击触发跳转的控件时,程序会调用预先定义的处理函数。在这个函数中,首先调用当前页面窗口的close()方法,关闭当前页面窗口。创建新页面窗口:在关闭当前页面窗口后,程序会创建新页面窗口的实例。新页面窗口的UI组件和布局在其构造函数中进行初始化。显示新页面窗口:创建新页面窗口实例后,调用其show()方法,将新页面窗口显示给用户。此时,用户可以在新页面中进行操作。在PyQt5中,可以通过调用一个控件的window()方法来获取包含该控件的顶层窗口对象。这对于在页面跳转或其他需要访问当前窗口的场景中非常有用。顶层窗口对象指的是应用程序中最外层的窗口,它通常是QMainWindow或QDialog的实例。顶层窗口是用户直接与之交互的窗口,它包含了所有的子控件和布局。fromPyQt5.QtWidgetsimportQApplication,QMainWindow,QPushButton,QVBoxLayout,QWidgetclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("主窗口")self.resize(400,300)self.centralwidget=QWidget(self)self.setCentralWidget(self.centralwidget)layout=QVBoxLayout()self.centralwidget.setLayout(layout)self.button=QPushButton("点击我",self.centralwidget)layout.addWidget(self.button)if__name__=="__main__":app=QApplication([])window=MainWindow()window.show()app.exec_()1234567891011121314151617181920212223在这个示例中,MainWindow是一个顶层窗口对象,它继承自QMainWindow。我们在MainWindow中添加了一个按钮作为子控件。用户可以直接与这个顶层窗口进行交互。可以直接在对应的事件响应函数使用:self.centralwidget.window().close()进行关闭当前窗口。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 06:06 , Processed in 0.428913 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表