Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 基于从导入包(PyQt5)打印的标准输出更新PyQt progressbar_Multithreading_Pyqt_Thread Safety_Pyqt5 - Fatal编程技术网

Multithreading 基于从导入包(PyQt5)打印的标准输出更新PyQt progressbar

Multithreading 基于从导入包(PyQt5)打印的标准输出更新PyQt progressbar,multithreading,pyqt,thread-safety,pyqt5,Multithreading,Pyqt,Thread Safety,Pyqt5,我是PyQt5的新手,希望您能为我提供以下方面的指导 我正在构建一个GUI,以便在运行各种慢速处理工具的Python包之上工作。当前接口是纯文本的:包在循环中运行一些代码,并将当前进度完成百分比打印到终端 我的目标是构建一个PyQt GUI,将此进度显示为progressbar。如果我可以将此调用添加到原始处理代码中,那么只需使用QProgressBar.setValue()即可实现,但这是不可能的;相反,我的GUI将构建在处理代码的当前文本输出界面之上 我觉得这应该可以通过某种方式使用线程实现

我是PyQt5的新手,希望您能为我提供以下方面的指导

我正在构建一个GUI,以便在运行各种慢速处理工具的Python包之上工作。当前接口是纯文本的:包在循环中运行一些代码,并将当前进度完成百分比打印到终端

我的目标是构建一个PyQt GUI,将此进度显示为progressbar。如果我可以将此调用添加到原始处理代码中,那么只需使用QProgressBar.setValue()即可实现,但这是不可能的;相反,我的GUI将构建在处理代码的当前文本输出界面之上

我觉得这应该可以通过某种方式使用线程实现,但我不确定如何在不影响性能/引入线程不安全操作的情况下拦截对stdout的调用


这可能吗?任何建议都将不胜感激。

我为此编写了一些StackOverflow文档。当我有时间的时候,我会很快写一些更高级的例子

希望这有帮助:)

编辑

由于堆栈溢出文档的过时,我将指南移到了我的博客上