首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在pyinstaller完成.exe之后,子进程的所有标准都被一次性打印到QTextBrower?

在pyinstaller完成.exe之后,子进程的所有标准输出被一次性打印到QTextBrowser的原因是因为pyinstaller在打包成可执行文件时,会将所有的标准输出重定向到一个临时文件中,然后在程序运行时将该临时文件的内容一次性读取并打印到QTextBrowser中。

这种行为是由pyinstaller的打包机制决定的,它的目的是将可执行文件与控制台输出分离,以提供更好的用户体验。通过将标准输出重定向到临时文件,可以避免在GUI界面中出现大量的输出信息,同时也方便用户查看和保存输出结果。

然而,如果你希望实时地将子进程的标准输出显示在QTextBrowser中,可以通过以下方法实现:

  1. 使用subprocess模块的Popen函数创建子进程时,设置参数stdout=subprocess.PIPE,将子进程的标准输出重定向到一个管道中。
  2. 在主进程中,使用循环读取管道中的输出,并将其实时显示在QTextBrowser中。

下面是一个示例代码:

代码语言:txt
复制
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextBrowser
from PyQt5.QtCore import QProcess

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.text_browser = QTextBrowser(self)
        self.setCentralWidget(self.text_browser)

        self.process = QProcess(self)
        self.process.readyReadStandardOutput.connect(self.update_output)
        self.process.start('your_executable.exe')

    def update_output(self):
        output = self.process.readAllStandardOutput().data().decode()
        self.text_browser.append(output)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

在上述代码中,我们使用了PyQt5来创建一个简单的GUI应用程序,其中QTextBrowser用于显示子进程的标准输出。通过设置QProcess的readyReadStandardOutput信号与槽函数update_output连接,可以实现子进程输出的实时更新。

需要注意的是,上述代码只是一个简单的示例,实际应用中可能需要处理更多的情况,比如错误输出、子进程退出等。此外,如果子进程的输出较大,可能会导致GUI界面的卡顿,可以考虑使用多线程或异步IO来处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python AI小项目打包通关:Pyinstaller和Wix都用上了

和model_050.hdf5打包到一个exe文件中,这样模型不会容易被别人拷贝走 将这些依赖包cv2, PyQt5, tensorflow也全部打包进这个exe文件,这样脱离环境也能直接运行 Step1...换成下面的就ok datas=[('res','.')], 亲测可行:下面是我的项目结构 一通操作之后获得了main.exe  满怀欣喜的一运行,报错啦 ImportError: OpenCV loader...也是正常,这么多年经验告诉我,一般都不可能一次性过的 Step2: 国外网站一通搜,没搞定啊,后来找到一个中国小哥的文章,搞定了 因为文章中有下面一句话,我知道了他已经踩过了同样的坑 查阅了往上的方法大部分都说升级...的位置放了进去 pyinstaller main.spec重新生成exe。...引用地址,还有需要的桌面快捷方式 build之后,生成了msi安装包和一个.cab文件  双击.cab文件之后发现,原来之前的exe藏在这里面了 双击msi一键安装之后,发现3件套全了,桌面快捷方式

1K30

Node打开选择文件夹弹框

来创建子进程(exec),它会将紫禁城的输入以回调函数参数的形式一次性返回。...启用ESM模式则是在package.json中,添加type: "module" 当然,答案有点小瑕疵,实际上得到的是当前文件的绝对地址,并且前面会有文件协议。所以需要进行一些处理。...但是,本人想要的效果是只需要下载工具,就能直接使用。而不需要手动修改。所以最好的方案还是在代码上做文章。 最后,功夫不负有心人。找到一个改变标准输入输出的默认编码的方案。...和Python的耦合度过高,所以最终考虑将python程序打包成exe文件。 将py打包为exe文件需要依赖pyinstaller。...更多:如何将python程序打包成exe文件_py打包成exe_一朝乐的博客-CSDN博客 安装pyinstaller可能会遇到的问题以及解决方案: 如何将python程序打包成exe文件_py打包成exe

2.9K50
  • CreatePipe匿名管道通信

    匿名管道(Anonymous Pipes)是在父进程和子进程间单向传输数据的一种未命名的管道,只能在本地计算机中使用,而不可用于网络间的通信。     ...在使用匿名管道通信时,服务器进程必须将其中的一个句柄传送给客户机进程。句柄的传递多通过继承来完成,服务器进程也允许这些句柄为子进程所继承。...匿名管道将在读、写句柄都被关闭后退出,也可以在进程中调用CloseHandle()函数来关闭此句柄   /   匿名管道程序示例     总的来说,匿名管道程序是比较简单的。...,子进程将继承父进程的标准输出,然后再将父进程的标准输出恢复为其初始状态。...于是父进程便可从管道读取数据,直到有错误发生或关闭管道写入端的所有句柄。

    1.1K10

    写了个Python小工具,再也不怕孩子偷偷玩电脑游戏啦

    怎么办呢,今天小编就带领大家来做一个防止孩子玩游戏的Python小程序。 1 查询电脑的所有进程 用Python循环检测电脑软件的运行情况,当发现游戏软件时弹出警告窗口,并截图保存。...第一步:循环查询电脑所有进程,并与游戏进程匹配 1).本文以steam为例,打开任务管理器(Ctrl+Alt+Delete),在详细信息栏我们可以找到steam的进程名字Steam.exe ?...2).然后用python的第三方模块psutil获取系统信息,只需一行代码就可以调取电脑的所有进程 import psutil pl = psutil.pids() ?...4 程序打包成exe文件 第四步:将程序文件打包成exe文件 我的想法是把程序先打包成可执行的exe文件,python有现成的模块pyinstaller,在pycharm里可以直接安装,安装完成后打开Win...打码的是代码文件地址,记住一定要加-w,不加-w运行程序的时候会弹出命令窗口,那就尴尬了。运行成功后,会提示生成exe文件的位置 ?

    1K10

    Linux文件基础IO

    (被打开的时候是用户调用端口,操作系统负责操控硬件,所以这个操作是用户进程和操作系统共同完成的) 8.磁盘的文件不是所有的都被打开,是一部分被打开,一部分关闭。...然后就是进行重定向了,首先要清楚,因为命令都是通过子进程去完成的,所以重定向也是通过子进程去完成的。 那么,为什么子进程操作不影响父进程的呢?...首先,进程拥有独立性,文件表也会拷贝父进程一份,但是文件是不会被拷贝的,也就是说子进程重定向是更改子进程的文件表,并不会影响父进程的。...那么,上面说到重定向的时候,为什么我们子进程退出时关闭了一个文件,按理来说父进程也会关闭文件,但是并没有,因为有一个叫做引用计数: 在结构体中有一个专门计数有多少个指针指向这个位置,如果这个数为0,文件就会关闭...首先要知道:没用重定向之前,stdout默认使用的是行刷新,在进程fork()之前,三条C函数已经将数据进行打印到显示器上了,这个时候我们的进程内部和FILE内部就没有数据了。

    1.3K00

    pyinstaller打包python项目

    5. pip & Wheel优点:pip是Python的标准包管理器,结合wheel格式,可以方便地打包和分发纯Python库,不涉及GUI应用。在Python环境中易于安装和升级。...6. setuptools & distutils优点:这两个模块是Python标准库的一部分,用于构建和分发Python包,提供了一种标准化的方式来组织和打包代码以便在各种环境下安装。...对于大部分桌面应用或者希望在没有Python环境的目标机器上运行的项目,PyInstaller和cx_Freeze是较为常用的选择。...你需要确保目标机器上有与打包时相同的Python DLL。依赖库缺失: PyInstaller虽然会尝试将所有必要的依赖打包到生成的可执行文件中,但有时可能会遗漏某些动态链接库。...打包参数不足: 确保在打包时使用了正确的参数来确保所有依赖都被包含在内。

    46910

    2018年8月10日对飞机大战的思考和将python源文件打包成exe可执行文件

    : 在win终端输入命令下载pyinstaller,命令是:  pip install pyinstaller 安装完后,检查安装成功与否,pyinstaller --version 下载后在图形化界面到你要打包的的文件目录下...用pyinstaller打包时候各个参数的意义: -F  指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) -c –console,...在开始设置一个标签,可以设为False,在游戏窗口上 添加一个暂停按钮,当点击之后False变成true,场景内的所有精灵的速度都设为0,音乐关闭pause,再点击一下 暂停键,重新所有速度speed...重新赋值让程序运行起来 孙世玉: 英雄飞机打子弹的时候英雄飞机颜色是怎么变的?...pygame中的自定义事件无论多少都是写USEREVENT +1 锻炼口才 python的类中设置静态方法的优势是可以在不用创建对象的前提下,直接类名.方法名直接使用,文件中的所有对象 都可以直接调用

    1.6K30

    pycharm将python程序打包_python 程序打包

    关于windows使用Pycharm 对python文件进行打包 首先建立python项目的时候要按照标准来建设 我使用的python配置的解释器,没有使用python的虚拟环境,因为虚拟环境建设出来的项目不是我想要的项目结构...环境配置调试好就可以运行调试python代码,代码没有问题,需要打包运行测试 我只是在windows环境运行验证 我使用的是pyinstaller 进行的打包测试 首先需要先安装pyinstaller...所以提示已经安装 (安装可以使用cmd黑窗口,也可以使用软件,没有区别) 在安装pyinstaller的同时,可能会报错,说什么pip的版本可能不匹配,建议升级 pip版本 14 更新pip版本的方法...,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护 -K, –tk 在部署时包含 TCL/TK -a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码...文件 pyinstaller -F xxx.py 因为是exe文件 所以可以双击运行,但是运行会存在黑窗口,如果被人误关掉,进程就不会存在 所以需要后台启动,这样就不会存在,误操作的失误,这样进程想要结束的话

    2.2K20

    Python如何生成exe文件?用Pycharm一步一步带着你学(超详细、超贴心)

    第一步 下载pyinstaller pyinstaller插件是Python自带的插件,用于为我们写好的代码进行打包,最终自动合成.exe文件。...-F:表示希望将所有的程序全部打包在一起,生成的只有一个.exe文件,这样的文件集成度高,但是运行速度慢;如果不写-F,生成的还有一堆.dll文件,这样的程序里文件很多,但是运行速度比较快,这也是我们平时使用的程序的样式...如果您是在子文件夹中写程序,可以把你写的所有程序都拷贝到工程文件夹中。 如果你在代码中导入了图片、文档等与路径相关的文件,注意修改路径。...点开dist文件夹,里面会有一个用你填进去的XXX命名的文件夹,再点进去,你就会看到XXX.exe文件。 理论上你已经生成了.exe可执行文件,这样就完成了。...解决这些问题我也花了很长时间,之后我再专门写一篇博客来告诉大家如何解决这些问题的,敬请期待。

    3.6K10

    python 生成exe文件

    大家好,又见面了,我是你们的朋友全栈君。 在windows下,可以使用pyinstaller打包python程序为exe可执行程序。...1、安装pyinstaller 在cmd命令行窗口运行以下命令安装pyinstaller pip install pyinstaller 2、打包python程序 在python程序所在目录,执行以下命令...# 切换到指定目录 cd /d path # 正常打包命令 pyinstaller -F -w -i ico_path xxx.py -F 是将所有文件打成一个exe文件,一般是必写的(注意必须是大写...3、运行exe文件 打包完成后,在对应目录会出现build和dist文件夹,exe文件就出现在dist文件夹,直接运行即可。...改为安装pyinstaller 5.2、exe点开之后就出现failed to execute script xxx 存在中文路径 使用pyinstaller时使用了-w命令与print冲突 5.3、反复运行本身

    1.8K10

    Linux进程——进程的创建(fork的原理)

    查看进程的第二种方法 在Linux系统中,不只有ps能够查看进程,还存在着一个动态目录proc,该目录存放了所有存在的进程,目录的名称。它会随着进程的改变而随时更新它的内容!...delete 在自行创建的进程中,我们只需要掌握好两个文件cwd和exe cwd代表当前工作目录 exe指向可执行程序的位置 默认情况下,进程启动所处的路径,就是当前路径,pwd指令其实就是从cwd...为什么fork会有两个返回值? 为什么fork的两个返回值,会给父进程返回子进程pid,给子进程返回0? fork之后父子进程谁先运行? 如何理解同一个变量会有不同的值? fork干了什么事情?...所以,fork之后,父子进程会执行一样的代码 为什么fork的两个返回值,会给父进程返回子进程pid,给子进程返回0?...创建完成子进程,只是一个开始,创建完成子进程之后,系统的其他进程,父进程和子进程,接下来要被调度执行的,当父子进程的PCB都被创建并在运行队列中排队的时候,哪一个进程的PCB先被选择调度,那个进程就先运行

    30511

    【Linux】开始了解重定向

    而为什么不加入fflush 呢结果是log.txt文件里也什么都没有呢??? 就是因为内容写入到文件内核缓冲区里还没有刷新就被close关闭了,所以还没刷新就文件被关闭了,还怎么打印到文件中。...为什么会有两个缓冲区, **因为系统调用是有成本的!...现象 2 : 按理说我们fork()之后,创建了子进程,子进程会继承父进程的代码与数据。那么为什么显示器只打印了一遍呢???...因为显示器采用行刷新,fork的时候,语言缓冲区和内核缓冲区里没有内容,所以子进程不会打印出来。...fork后 ,子进程会拷贝一份数据也就语言层的缓冲区被打印了两次,内核缓冲区不会拷贝给子进程(不是用户级,所有用户共享) 缓冲区就在struct file 内部!每个文件都有自己的缓冲区。

    10410

    Python安装扩展库与打包成exe可执行文件的方法

    .whl 2、Python程序打包成exe程序之后可以在没有安装Python解释环境的Windows平台上运行。...setup.py py2exe 接下来就会看到控制台窗口中大量的提示内容飞快地闪过,这个过程将自动搜集CheckAndViewAutoRunsInSystem.py程序执行所需要的所有支持文件,如果创建成功的话则会在当前文件夹下生成一个...dist子文件夹,其中包含了最终程序执行所需要的所有内容。...等待编译完成以后,将dist文件中的文件打包发布即可。 注意:对于GUI应用程序,则需要将上面setup.py程序代码中的关键字“console”修改为“windows”。...安装之后在命令提示符环境中使用命令“pyinstaller -F -w kousuan.pyw”即可将Python程序kousuan.pyw及其所有依赖包打包成为kousuan.exe可执行文件,从而脱离

    1.7K60

    Donut - 将 .NET 程序集作为 Shellcode 注入

    Mudge 将此称为“牺牲进程”,因为它充当有效负载的主机,将 Beacon 进程与代码中的任何故障隔离开来。 反射 DLL 被注入子进程以加载 .NET 运行时。...您最多可以做的是通过更改 Malleable C2 配置文件中的spawnto变量来指定为您的牺牲子进程运行的可执行文件。...Donut 将生成一个带有随机名称的加密 Donut 模块,您应该将其放置在您指定的 URI 中。当您生成 shellcode 时,您应该放置它的名称和位置将打印到您的屏幕上。 ....因为它是我能找到的最……啊……复杂的 .NET 程序集,所以我将它用于所有测试。您可以使用任何标准的 shellcode 注入技术来注入 .NET 程序集。...在进程初始执行之后或从非托管代码加载 CLR 是不寻常的。很少有合法的用例。从防御者的角度来看,这允许您构建一个分析来监控上一节中描述的行为。

    2.1K00

    pyinstaller打包exe免杀和逆向浅析

    2.3 打包文件总结 在py2exe打包之后的文件,并不是一个单纯的exe文件,不能像pyinstaller那样,直接一个exe完事,文件必须放在dist文件夹下,需要引入第三方的文件才可以执行。...打包为exe文件 pyinstaller -F 01_easy.py 其中 参数 -F 是为了将程序打包为一个exe文件,而且不产生其他的文件 打包完成之后,本地会生成一个dist的文件夹,在这个文件夹里就有一个打包好的...3.3 反编译_pyc 针对pyinstaller打包之后的exe反编译工具:pyinstxtractor.py pyinstaller extractor是可以提取出pyinstaller所创建的exe...04 -F --key参数反编译 在使用pyinstaller的时候,可以使用--key参数对生成的exe进行加密,在使用这个参数的时候需要pycrypto库,可以通过pip的方式进行安装,但是保不齐安装的时候会出现一些问题...理论上讲,该文件可以理解为勒索病毒加密之后的文件,如果key足够复杂,在还原文件上还是非常有难度的,但是在pyinstaller的作者并非将该文件写死,该文件还是能够进行还原的。

    6K30

    Python中常用的第三方库_vscode如何使用第三方库

    pip 的 uninstall 子命令可以下载一个已经安装的第三方库。 语法格式: pip uninstall 模块名称 pip 的 list 子命令可以列出当前系统中已经安装的第三方库。...pyinstaller –F a.py 执行后在 dist 目录中出现了 a.exe 文件,没有任何依赖库,执行它即可运行程序。...jieba 库支持三种分词模式:精确模式,将句子最精确地切分,适合文本分析;全模式,把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;搜索引擎模式,在精确模式基础上,对长词再次切分,提高召回率...-F (6)使用pyinstaller打包程序时,–path命令的作用是() A. 指定代码文件所在目录 B. 指定pyinstaller所在目录 C. 指定代码所依赖非标准库的路径 D....指定生成exe文件的目录 (7)关于 pyinstaller, 下列说法中错误的是() A. pyinstaller 是用于将 Python 脚本打包成可执行文件的工具 B. pyinstaller

    1.9K20

    python自动连接wifi_python自动点击网页

    2.4 获取本机的局域网ip 3.自动连接Wi-Fi 4.打包成exe文件 原来在本科期间买的老华硕电脑,最近开始无缘无故的黑屏、死机,让我开始有了换电脑的念头,早都想试一试苹果的系统了,所以趁着这次...在适应了一天之后,基本上使用起来没什么障碍了,肯定还有很多功能是我没发现的,以后在慢慢探索了。...它的标准格式如下: 协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?...print("登录校园网成功,局域网ip如下:") print(user_ip) #input("") 4.打包成exe文件 1.先安装pyinstaller包 pip3 install pyinstaller.../3.8/bin/pyinstaller -F xx.py 执行完操作,会生成三个文件,exe文件在dist文件内,至此,全部工作完成。

    1.3K30

    实战|Python数据分析可视化并打包

    ,本文主要涉及下面三个部分: Pandas数据处理 Matplotlib绘图 彩蛋:利用pyinstaller将py文件打包为exe ---- 虽然本文使用的数据(医学相关)不会出现在你平时的工作学习中...,但是处理的过程比如导入数据、缺失值处理、数据去重、计算、汇总、可视化、导出等操作却是重要的,甚至还教你如何将程序打包之后对于重复的工作可以一键完成!...我们需要完成的工作主要有四块: 1. 去除各组所有重复中的最大值和最小值 2. 所有数据根据D0的对应分组进行标准化 3....绘制折线图 所以我们需要的结果应该是:在自己的桌面上建一个文件夹命名data,将原始数据data.xlsx放进去,之后运行完程序后文件夹会新增3个文件: ?...根据D0的各组均值对所有数据标准化,可以简单理解为DO批次5个组去除两个极值后各求平均值,这5个批次的5个组各自除于D0对应组的均值) # 根据组数取出D0的所有行数,然后按行求均值,会自动忽略文本信息

    1.4K10

    【计网】自定义序列化反序列化(三) —— 实现网络版计算器【下】

    我们想要积压一批数据,然后在一次性发送,这样就能测试服务器的功能是否有问题,是否能处理多批数据,所以在这里我们一次性构建五个请求让后在发送给服务器端,同样构建请求时需要对数据进行序列化和添加长度报头:...发送到对端 sockptr->Send(send_str); } } }   那么我们所有准备都已经做好了,接下来就是通信时刻:   这样网路版本计算器我们就实现完成了...首先是创建终端文件,其次bash被启动,而bash又作为所有进程的父进程,bash则会打开创建的终端文件。...很简单,每个进程组都有一个唯一的标识符,通常是进程组的组长(Leader)的进程ID,而组长就是他们之中第一个启动的进程:   所以,我们在程序中直接创建子进程,并且退出父进程,那么,那么当前进程就可以调用...,daemon内部会自动的fork并且退出父进程:   经过测试我们可以看到,hello.exe 的TTY,也就是终端文件变成了 “?”

    9010
    领券