基于 PySide6 的 QProcess 方法使用介绍

一、QProcess 核心功能

QProcess 是 Qt 框架中用于启动外部程序并与其交互的核心类。主要功能包括:

  1. 进程启动与控制:支持同步(execute())和异步(start())执行外部程序。
  2. 进程通信:通过标准输入(stdin)、输出(stdout)和错误输出(stderr)通道与子进程交互。
  3. 状态监控:通过信号(如 started()finished())实时跟踪进程状态。
  4. 资源管理:提供 kill() 和 terminate() 强制终止进程,并支持自动释放资源

二、基本使用步骤

1. 启动外部程序

需明确指定程序路径和参数,避免直接传递完整命令字符串(旧版已弃用):

from PySide6.QtCore import QProcess

process = QProcess()
process.setProgram("python3")  # 设置程序路径
process.setArguments(["-i"])   # 设置参数(如交互模式)
process.start()                # 启动进程

 ⚠️ 注意:旧版 start("python dummy.py") 已弃用,需分离程序名和参数 。

2. 处理输入输出

通过信号与槽机制实现异步通信,避免阻塞主线程:

# 连接输出信号到处理函数
process.readyReadStandardOutput.connect(handle_stdout)
process.readyReadStandardError.connect(handle_stderr)

def handle_stdout():
    data = process.readAllStandardOutput()
    print("标准输出:", data.data().decode())

def handle_stderr():
    data = process.readAllStandardError()
    print("错误输出:", data.data().decode())
3. 进程状态监控
  • 信号绑定:监听进程启动、结束和错误事件:

    process.started.connect(lambda: print("进程已启动"))
    process.finished.connect(lambda: print("进程结束,退出码:", process.exitCode()))
    process.errorOccurred.connect(lambda err: print("错误发生:", err))
  • 状态查询:通过 state() 获取当前状态(QProcess.NotRunningQProcess.Running)。

4. 进程终止与资源释放
  • 强制终止

    • terminate():发送终止信号(允许进程清理资源)。
    • kill():立即终止进程(可能残留资源)。
if process.state() == QProcess.Running:
    process.terminate()
    process.waitForFinished(3000)  # 最多等待3秒

 自动释放:通过 deleteLater() 延迟删除对象:

process.finished.connect(process.deleteLater)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值