PyQt5界面绘制

本文介绍了如何在Python环境中安装PyQt5和相关工具,包括使用国内镜像源,以及如何在PyCharm中集成qtdesigner和uic插件。重点讲解了QThread和信号槽在处理多线程UI更新中的应用。
摘要由CSDN通过智能技术生成

前期准备

安装pyqt5和tools库

pip install PyQt5
pip install PyQt5-tools

用国内镜像源安装也可以

pip install PyQt5 -i https://pypi.douban.com/simple
pip install PyQt5-tools -i https://pypi.douban.com/simple

在pycharm里插入qtdesigner和uic插件

qtdesigner的三个配置如下

程序: F:\anaconda\envs\wyd_yolov5\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
注意根据自己环境位置确定,在自己文件夹下的site-packages\qt5_applications\Qt\bin\designer.exe目录下。


实参:此处空着


工作目录:$FileDir$
$FileDir$

pyuic的三个配置如下

程序: F:\anaconda\envs\wyd_yolov5\Scripts\pyuic5.exe
注意在自己环境目录下的Scripts\pyuic5.exe位置


实参:$FileName$ -o  $FileNameWithoutExtension$.py


工作目录:$FileDir$
$FileName$ -o  $FileNameWithoutExtension$.py

界面绘制

自行使用qt dexigner绘制,不作赘述

界面显示

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from zhuzijiemian import Ui_QT5

class MyWindow(QWidget, Ui_QT5):
    def __init__(self):
        super().__init__()
        self.setupUi(self)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

QWidget是窗口类型,Ui_QT5是窗口名称,即在转化后的界面文件中定义class Ui_QT5。

app = QApplication(sys.argv)

  • 这行代码创建了一个 QApplication 对象。在 PyQt 中,每个 GUI 应用程序都必须有一个 QApplication 实例。这个实例负责管理应用程序的控制流和主要设置。
  • sys.argv 是一个从 Python 标准库 sys 模块传入的参数列表。它使得您的 PyQt 应用程序可以接收命令行参数。这对于某些类型的应用程序(例如,那些需要文件路径作为输入的应用程序)是很有用的。
  • sys.exit(app.exec_())
  • app.exec_() 这个方法启动了应用程序的事件循环。简而言之,事件循环是一个无限循环,它等待并处理事件,例如鼠标点击或按键,并将它们发送到适当的控件。在 PyQt 中,没有启动事件循环的话,窗口可能会瞬间出现后消失,因为程序会立即结束。
  • sys.exit() 函数确保主程序能够干净地退出。当 app.exec_() 事件循环结束时(例如,当您关闭了主窗口),app.exec_() 会返回一个整数值,表示应用程序是如何结束的。sys.exit() 使用这个值来通知系统应用程序是如何结束的。

在QT中使用Qthread和thread区别

在 PyQt 中,信号和槽是一种特殊的机制,用于在对象之间安全地传递信息。这在多线程应用程序中尤其重要,因为直接从一个线程更新另一个线程(特别是UI线程)的状态可能会导致数据不一致或程序崩溃。

  • 信号(Signal):是由对象发出的消息,表明已经发生了某种动作或事件。例如,一个按钮可能会在被点击时发出一个信号。
  • 槽(Slot):是一个函数或方法,它在接收到特定信号时被调用。您可以将多个槽连接到同一个信号上,这样当信号发出时,所有连接的槽都会被调用。

如果您的程序中的线程仅执行一些后台任务,比如执行计算或处理数据,而不需要与主UI线程交互(例如,更新UI元素或响应用户操作),那么您可能不需要使用信号和槽机制。在这种情况下,使用 Python 标准库中的 threading 模块可能更简单。

然而,如果您的后台线程需要在其执行过程中更新UI,或者需要在任务完成后通知UI线程(例如,启用或禁用按钮,更新进度条,显示消息等),那么使用 PyQt 的信号和槽机制会更安全,因为它们是为了跨线程通信而设计的,可以确保这些更新和通信在UI线程中安全地进行。在这种情况下,您应该使用 QThread 和相关的信号和槽机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值