PyQt5入门

news2024/9/23 7:28:48

Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg。其中PyQt是Qt(c++语言实现的)为Python专门提供的扩展
PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.。而在Python中则使用PyQt这一工具包(PyQt5、PyQt5-tools、PyQt5-stubs),它是Python编程语言和Qt库的成功融合。

一、PyQt安装

pip install PyQt5 安装PyQt5。
pip install PyQt5-tools 安装Qt工具软件。
pip install PyQt5-stubs 安装PyQt5语法检测包(可选)。
安装完成之后可以在Python的安装目录/Lib/site-packages中找到PyQt5目录。

示例:

main.py文件

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout


class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建一个垂直布局
        layout = QVBoxLayout()
        # 创建一个标签,并设置文本内容
        label = QLabel("Hello, World!")
        # 将标签添加到布局中
        layout.addWidget(label)
        # 设置窗口的布局
        self.setLayout(layout)
        # 设置窗口的大小
        self.setGeometry(300, 300, 300, 150)
        # 设置窗口的标题
        self.setWindowTitle('Hello World')
        # 显示窗口
        self.show()


# 创建应用程序对象
app = QApplication(sys.argv)

# 创建实例
ex = MyApp()

# 进入应用程序的主循环,等待事件处理
sys.exit(app.exec_())

执行命令:python main.py

运行过程中,如果出现下列错误。

1、ModuleNotFoundError: No module named 'PyQt5'

说明没有PyQt5安装或安装成功,解决方法:安装PyQt5

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

2、ImportError: DLL load failed while importing QtWidgets: 找不到指定的程序。

先卸载PyQt5,再安装PyQt5。

pip uninstall PyQt5
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

二、安装PyQt Integration插件。

1、Qt Designer、PyUIC、PyRcc

安装PyQt Integration插件(Qt Designer、PyUIC、PyRcc),可以帮我们自动生成UI相关代码和资源。

Qt Designer:可以通过Qt Designer来编写UI界面,Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages\pyqt5-tools”下。
PyUIC:Qt Designer生成的.ui文件(实质上是XML格式的文件)可以通过pyuic5工具或python转换成.py文件。
命令格式:

pyuic5 -o destination.py source.ui

或者

python.exe -m PyQt5.uic.pyuic  source.ui -o destination.py

PyRcc:在使用PyQt开发界面时,在Qt Designer中使用的图片等资源需要将其编译为py文件,这时需要用到PyRcc工具方便地将qrc文件转换为py文件。
资源文件编写说明
3.1新建resource.qrc(也可以通过Qt Designer生成qrc文件),代码如下:

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file alias="contacts.png">ico/contacts.png</file>
<file alias="exit.png">ico/exit.png</file>
<file alias="about.png">ico/about.png</file>
<file alias="config.png">ico/config.png</file>
<file alias="help.png">ico/help.png</file>
</qresource>
</RCC>

3.2命令格式:

pyrcc5 -o resource.py resource.qrc

2、在PyCharm中配置Qt Designer、PyUIC、PyRcc

1、点击菜单栏“File”,弹出下拉框,选择“Setting”,弹出设置界面。在设置界面中选择“Tools”→“External Tools”,操作如下图所示。

2、外部工具配置。

名称:QtDesigner
工具设置
    程序:E:\Anaconda\anaconda3\Library\bin\designer.exe
    工作目录:$FileDir$

名称:PyUIC
工具设置
    程序:E:\Anaconda\anaconda3\envs\pytorch\python.exe
    实参:-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py
    工作目录:$FileDir$
或者 
    程序:D:\anaconda3\Scripts\pyuic5.exe
    实参:$FileName$ -o $FileNameWithoutExtension$.py
    工作目录:$FileDir$

名称:PyRcc
工具设置
    程序:D:\anaconda3\Scripts\pyrcc5.exe
    实参:$FileName$ -o $FileNameWithoutExtension$_rc.py
    工作目录:$FileDir$

三、PyQt5使用

1、首先打开或新建一个Python项目,点击菜单栏中的“Tools”,选择“External Tools”,可以看到之前设置好的三个工具,选择“Qt Designer”打开Qt设计工具,步骤如下图所示:

2、打开软件后,在弹出的引导界面选择“Main Window”,然后点击“创建”按钮,创建一个窗体界面,如下图所示:

3、创建简单界面。

最终完成后的界面如下图所示,点击“保存”保存为ui文件并置于项目目录下,比如:untitled9.ui。

4、右键点击ui文件(比如:untitled9.ui),选择“External Tool”,再选择PyUIC,将ui文件转换成py文件。

5、右键点击qrc文件(比如:my.qrc),选择“External Tool”,再选择PyRcc,将qrc文件转换成py文件。

6、编辑ui文件。
6.1)右键点击ui文件(比如:untitled9.ui),选择“External Tool”,再选择QtDesigner,弹出Qt Designer界面。

6.2)在Qt Designer界面,点击“打开”按键。

6.3)弹出对话框,选择ui文件(比如:untitled9.ui),打开。

6.4)打开文件后,就可以编辑ui文件。

7、新建一个python文件(比如:run_untitled.py),测试刚才的ui生成的py文件。

import sys
import untitled9

from PyQt5.QtWidgets import QApplication, QMainWindow

if __name__ == '__main__':
    # 实例化,传参
    app = QApplication(sys.argv)

    # 创建对象
    mainWindow = QMainWindow()

    # 创建ui,引用untitled文件中的Ui_MainWindow类
    ui = untitled9.Ui_MainWindow()

    # 调用Ui_MainWindow类的setupUi,创建初始组件
    ui.setupUi(mainWindow)

    # 创建窗口
    mainWindow.show()

    # 进入程序的主循环,并通过exit函数确保主循环安全结束(该释放资源的一定要释放)
    sys.exit(app.exec_())

8、运行run_untitled.py

8、使用pyinsaller生成exe文件。

8.1 cmd窗口下,进入工程目录下。

8.2 执行pyinstaller命令,生成exe文件

pyinstaller --onedir --noconsole run_untitled.py --name test

8.3在dist\test目录下,执行test.exe文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1976684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模--支持向量机

目录 SVM的基本原理 SVM的应用场景 实现细节与案例分析 总结 支持向量机&#xff08;SVM&#xff09;在处理非线性数据时的核函数有哪些&#xff0c;以及它们各自的优缺点是什么&#xff1f; 如何选择支持向量机的惩罚参数CC以优化模型性能和计算效率&#xff1f; 在实际…

Day17_1--AJAX学习之GET/POST传参

AJAX 简介 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。其实AJAX就可以理解为就是JS。通过AJAX也就实现了前后端分离&#xff0c;前端只写页面&#xff0c;后端生成数据&#xff01; 现在开始通过实例学习&#xff1a; 1--GET传参 <!…

4.4 标准正交基和格拉姆-施密特正交化

本节的两个目标就是为什么和怎么做(why and how)。首先是知道为什么正交性很好&#xff1a;因为它们的点积为零&#xff1b; A T A A^TA ATA 是对角矩阵&#xff1b;在求 x ^ \boldsymbol{\hat x} x^ 和 p A x ^ \boldsymbol pA\boldsymbol{\hat x} pAx^ 时也会很简单。第二…

深入解析 kubectl describe pod:全面了解 Kubernetes Pod 的运行状态

引言 在 Kubernetes 集群中&#xff0c;kubectl describe pod 命令是运维人员和开发者常用的工具之一&#xff0c;它提供了有关 Pod 的详细信息&#xff0c;帮助我们了解 Pod 的状态、配置和运行状况。这篇博文将深入解析 kubectl describe pod 命令的输出内容&#xff0c;逐项…

Transformer网络的魔改结构与应用领域

Transformer网络的魔改结构与应用领域 Transformer的基础架构Transformer的变体Transformer的应用领域未来发展方向 参考文献 自从Transformer架构在2017年被提出以来&#xff0c;它已经成为深度学习领域的一项革命性技术。Transformer最初应用于自然语言处理&#xff08;NLP&a…

测试左移,浅谈如何编写可反复执行的单元测试用例

测试左移&#xff0c;浅谈如何编写可反复执行的单元测试用例 背景当下现状期望目标当下困境 解决问题问题1&#xff1a;事务提交Transactional代码示例 问题2&#xff1a;对数据库数据强依赖Sql代码示例SQL脚本示例 问题3&#xff1a;断言assert的使用代码示例DemoTestBaseAppl…

触想工业显示器方案在汽车装配生产线上的应用

一、行业发展背景 中国汽车工业协会数据显示&#xff0c;2023年我国汽车产销量双双实现历史性突破&#xff0c;分别达到3016.1万辆和3009.4万辆&#xff0c;并连续15年位居全球首位。 汽车产业热销背后是先进的生产装配体系支撑&#xff0c;从零部件到整车&#xff0c;汽车的生…

IntelliJ IDEA下载、安装、运行,示例代码;最详细安装和运行教程

IntelliJ IDEA下载、安装、运行&#xff0c;最详细安装教程 以下内容参考&#xff1a; 原文标题&#xff1a;IntelliJ IDEA下载安装教程&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了-CSDN博客 原文地址&#xff1a;https://blog.csdn.net/…

汇编语言代码中立即数的前缀和后缀

汇编语言的语法细节非常多&#xff1b; 1 以A-F开头的十六进制数前需要加0 在汇编语言代码中&#xff0c;‌以A-F开头的十六进制数前需要加0以避免被识别为助记符。‌ 如下图&#xff0c; MOV AL, AFH&#xff0c; 这样将报错&#xff1b; AFH的前面加0就对了&#xf…

基于STM32的智能医疗监控系统教程

目录 引言环境准备智能医疗监控系统基础代码实现&#xff1a;实现智能医疗监控系统 生理参数监测模块数据处理与存储模块无线通信模块用户界面与报警系统应用场景&#xff1a;医疗监测与优化常见问题与解决方案收尾与总结 引言 随着健康管理需求的增加&#xff0c;智能医疗监…

“消费新纪元:解锁消费增值的无限可能“

亲爱的顾客朋友们&#xff0c;大家好&#xff01;今天&#xff0c;我非常荣幸能与大家分享一种前沿的消费理念——“消费增值”&#xff0c;它旨在让您的每一次消费都充满额外的价值与回报&#xff01; 在传统消费观念里&#xff0c;我们往往只是简单地支付金钱以换取商品或服务…

IBM:生成式AI时代的网络安全研究报告

《生成式 AI 时代的网络安全》由 IBM 发布&#xff0c;该报告指出随着生成式 AI 在企业中的广泛应用&#xff0c;网络安全面临新的挑战与机遇。 一、简介 网络安全领导者在面对生成式 AI 带来的变革时&#xff0c;需应对其潜在风险。尽管生成式 AI 能大幅提高企业生产力&…

学python的第二天:第一个代码

打印一个“Hello World” print 中文含义“打印” PyCharm&#xff08;以后简称PC&#x1f641;&#xff09;的参数解释 它吧啦吧啦说个不停 但我只打印一个“Hello World” 代码&#xff1a; print("Hello World") 效果&#xff1a; 魔改时间到 一号选手 请…

python 可视化探索(三):Seaborn数据可视化

总结&#xff1a;本文为和鲸python 可视化探索训练营资料整理而来&#xff0c;加入了自己的理解&#xff08;by GPT4o&#xff09; 原作者&#xff1a;作者&#xff1a;大话数据分析&#xff0c;知乎、公众号【大话数据分析】主理人&#xff0c;5年数据分析经验&#xff0c;前…

0803实操-数字取证

0803实操-数字取证 易失性数据收集 创建应急工具箱&#xff0c;并生成工具箱校验和&#xff0c;能在最低限度地改变系统状态的情况下收集易失性数据。 数据箱 使用md5sums.exe对工具目录中的所有文件进行计算 获取计算机本地日期和时间。输入命令date/t>timefront.txt和…

MES系统在企业数字化转型中扮演了什么样的角色

MES系统&#xff08;制造执行系统&#xff09;在企业数字化转型中扮演了至关重要的角色。以下是MES系统在企业数字化转型中的具体作用&#xff1a; 一、实现生产过程的数字化与智能化 实时监控与数据采集&#xff1a;MES系统通过实时监控和数据采集&#xff0c;将传统的手工记…

npos解析

概念理解 .npos是一个常数&#xff0c;表示size_t的最大值&#xff08;Maximum value for size_t&#xff09;。许多容器都提供这个东西&#xff0c;用来表示不存在的位置 #include <iostream> #include <limits> #include <string> using namespace …

使用Chainlit接入通义千问快速实现一个本地文档知识问答机器人增强版

前言 之前写了一篇文章&#xff0c;使用国内通义千问作为llm&#xff0c;结合langchain框架实现文本向量化检索和使用chainlit实现网页界面交互&#xff0c;实现一个本地知识问答的机器人。原文链接《使用Chainlit接入通义千问快速实现一个本地文档知识问答机器人》。本次基于…

七夕情人节有什么好物推荐?五款性价比超高的产品推荐!

亲爱的朋友们&#xff0c;随着七夕情人节的临近&#xff0c;空气中弥漫着浪漫与甜蜜的气息。在这个专属恋人的节日里&#xff0c;团团知道大家在为心爱的人挑选礼物时可能会感到纠结。因此&#xff0c;我根据个人的浪漫经验和精心的市场挑选&#xff0c;为大家准备了一份情人节…

商家接单业务

文章目录 概要整体架构流程技术细节小结 概要 商家接单是电子商务、外卖平台、在线零售等多个行业中的一项核心业务流程。这项功能允许商家接收来自客户的订单&#xff0c;并对其进行处理。 需求分析以及接口设计 技术细节 1.Controller层: /*** 接单* param orderConfirmD…