初探在Pycharm中使用QT开发GUI页面,安装配置以完整项目代码

您所在的位置:网站首页 qt如何加载人家写好的组件 初探在Pycharm中使用QT开发GUI页面,安装配置以完整项目代码

初探在Pycharm中使用QT开发GUI页面,安装配置以完整项目代码

2024-07-06 04:00:52| 来源: 网络整理| 查看: 265

初探在Pycharm中使用QT开发GUI页面,安装配置以完整项目代码 目录QT and PyQt5 介绍安装创建一个完整项目使用QTDesigner设计UI界面编写py文件来组合UI界面跟业务逻辑将py文件打包成exe程序

目录

由于项目要求最近在看GUI开发的一些知识,在了解了Python的tkinter库跟QT之后,分别做了一版。其中QT更便于上手,功能更加丰富,开发速度与可维护性都比较好,所以对Python 开发QT做一个长期的学习记录。

本文章包括所用到的组件安装,以及将一个新项目从创立到打包成exe可执行程序的全过程。

QT and PyQt5 介绍

QT是跨平台的C++开发库,主要用来开发用户图形界面程序(GUI),当然它的功能不止与此,还可以用来绘制漂亮的界面(包括控件,交互,布局),处理多线程,访问数据库,图像跟音视频的处理,网络通信,文件操作等。

Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具开发界面的使用方法。

PyQt5是使用Python语言根据QT设计的为了在Python上使用的,本文使用的是Python3。

PyQt5的类别分为几个模块,包括以下:

QtCore 包含了核心的非GUI功能。此模块用于处理时间、文件和目录、各种数据类型、流、URL、MIME类型、线程或进程。QtGui 包含类窗口系统集成、事件处理、二维图形、基本成像、字体和文本。qtwidgets 模块包含创造经典桌面风格的用户界面提供了一套UI元素的类。QtMultimedia 包含的类来处理多媒体内容和API来访问相机和收音机的功能。Qtbluetooth 模块包含类的扫描设备和连接并与他们互动。描述模块包含了网络编程的类。这些类便于 TCP和IP和UDP客户端和服务器的编码,使网络编程更容易和更便携。Qtpositioning 包含类的利用各种可能的来源,确定位置,包括卫星、Wi-Fi、或一个文本文件。Enginio 模块实现了客户端库访问Qt云服务托管的应用程序运行时。Qtwebsockets 模块包含实现WebSocket协议类。QtWebKit 包含一个基于Webkit2图书馆Web浏览器实现类。Qtwebkitwidgets 包含的类的基础webkit1一用于qtwidgets应用Web浏览器的实现。QtXml 包含与XML文件的类。这个模块为SAX和DOM API提供了实现。QtSvg 模块提供了显示SVG文件内容的类。可伸缩矢量图形(SVG)是一种描述二维图形和图形应用的语言。。QtSql 模块提供操作数据库的类QtTest 包含的功能,使pyqt5应用程序的单元测试 安装

请自行安装pycharm并且配置Python

PyQt5 可以直接pip install pyqt5来安装pyqt5-tools+QTDesigner 可以参考这篇文章 https://blog.csdn.net/esting_tang/article/details/81082504 创建一个完整项目 使用QTDesigner设计UI界面 打开

这里是引用

界面介绍 在这里插入图片描述 菜单栏 区域:用来新建窗口,保存,提供布局快捷键 拖拽组件 区域 :提供Gui界面开发各种基本控件,如单选框、文本框、按钮等。可以拖动到新创建的主程序界面。(在后续的文章中将介绍各个组件的作用)

控件对象列表 区域 :查看主窗口放置的对象列表。

控件属性更改 区域: 提供对窗口、控件、布局的属性编辑功能。比如修改控件的显示文本、对象名、大小等。下面的编辑控件的信号和槽函数,也可以添加自定义的信号和槽函数。

步骤 1.新建一个空白窗口 在这里插入图片描述 在这里插入图片描述 2.拖入组件,并调整属性,这里我们用一个简单的例子,只包括一个按钮,一个标签跟两个文本框(输入输出) 在这里插入图片描述 在这里插入图片描述 3来点击保存/另存为,会生成一个.ui文件,这里我命名为’example_ui’ 在这里插入图片描述

编写py文件来组合UI界面跟业务逻辑 首先需要将.ui文件更改为.py文件 使用命令行pyuic5 -o example_ui.py example_ui.ui转换成.py文件。调用格式为pyuic5 -o {输出文件名} {输入designer设计好的.ui后缀界面文件}。得到的.py文件如下 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'example_ui.ui' # # Created by: PyQt5 UI code generator 5.13.0 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(315, 206) self.layoutWidget = QtWidgets.QWidget(Form) self.layoutWidget.setGeometry(QtCore.QRect(50, 50, 201, 111)) self.layoutWidget.setObjectName("layoutWidget") self.formLayout = QtWidgets.QFormLayout(self.layoutWidget) self.formLayout.setContentsMargins(0, 0, 0, 0) self.formLayout.setObjectName("formLayout") self.textBrowser = QtWidgets.QTextBrowser(self.layoutWidget) self.textBrowser.setObjectName("textBrowser") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.textBrowser) self.pushButton = QtWidgets.QPushButton(self.layoutWidget) self.pushButton.setObjectName("pushButton") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.pushButton) self.textEdit = QtWidgets.QTextEdit(self.layoutWidget) self.textEdit.setObjectName("textEdit") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.textEdit) self.label = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("Arial") font.setPointSize(12) self.label.setFont(font) self.label.setObjectName("label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "完成")) self.label.setText(_translate("Form", "请输入:"))

2.因为生成的代码块只是UI界面的部分,具体的将界面展示以及逻辑串联还需要进一步的工作,为了后续的维护方便,实现逻辑清晰,将页面与业务逻辑相分离,新建一个example_main.py文件,调用example_ui文件 首先保持窗口可执行

# 导入程序运行必须模块 import sys # PyQt5中使用的基本控件都在PyQt5.QtWidgets模块中 from PyQt5.QtWidgets import QApplication, QMainWindow # 导入designer工具生成的login模块 from example_ui import Ui_Form class MyMainForm(QMainWindow, Ui_Form): def __init__(self, parent=None): super(MyMainForm, self).__init__(parent) self.setupUi(self) if __name__ == "__main__": # 固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行 app = QApplication(sys.argv) # 初始化 myWin = MyMainForm() # 将窗口控件显示在屏幕上 myWin.show() # 程序运行,sys.exit方法确保程序完整退出。 sys.exit(app.exec_())

点击运行,效果如下图: 在这里插入图片描述 3.此时点击按钮还没有任何反应,再写一个简单的逻辑来点击’完成’按钮时,输出框输出输入的值 加入逻辑:

# 导入程序运行必须模块 import sys # PyQt5中使用的基本控件都在PyQt5.QtWidgets模块中 from PyQt5.QtWidgets import QApplication, QMainWindow # 导入designer工具生成的login模块 from example_ui import Ui_Form class MyMainForm(QMainWindow, Ui_Form): def __init__(self, parent=None): super(MyMainForm, self).__init__(parent) self.setupUi(self) #给按钮添加点击事件,调用display函数 self.pushButton.clicked.connect(self.display) def display(self): #利用toPllainText()来获取textEdit的输入值 MyInput = self.textEdit.toPlainText() #利用setText()来对textBrowser控件输出值 self.textBrowser.setText(MyInput) if __name__ == "__main__": # 固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行 app = QApplication(sys.argv) # 初始化 myWin = MyMainForm() # 将窗口控件显示在屏幕上 myWin.show() # 程序运行,sys.exit方法确保程序完整退出。 sys.exit(app.exec_())

运行效果如下图: 在这里插入图片描述 这样就完成了, 在输出框展示通过按钮点击获取输入框的时间,使用以上知识就可以完成一些简单的功能开发了。

将py文件打包成exe程序

首选安装pyinstaller在这里插入图片描述 执行打包在这里插入图片描述 等待完成后,在相应的目录下就可以看到EXE文件及相关配件信息 在这里插入图片描述. .exe在dist中

PyInstaller 支持的常用选项

指令作用-F,-onefile产生单个的可执行文件-D,–onedir产生一个目录(包含多个文件)作为可执行程序-a,–ascii不包含 Unicode 字符集支持-d,–debug产生 debug 版本的可执行文件-w,–windowed,–noconsolc指定程序运行时不显示命令行窗口(仅对 Windows 有效)-c,–nowindowed,–console指定使用命令行窗口运行程序(仅对 Windows 有效)-o DIR,–out=DIR指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件-p DIR,–path=DIR设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径-n NAME,–name=NAME指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭