基于导入包中的打印标准输出更新PyQt进度条(PyQt5)

时间:2017-05-20 05:57:44

标签: multithreading pyqt thread-safety pyqt5

我对PyQt5相对较新,并希望获得以下任何指导。

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

我的目标是构建一个PyQt GUI,将此进度显示为进度条。如果我可以将此调用添加到原始处理代码,则可以使用QProgressBar.setValue()完成此操作,但这是不可能的;相反,我的GUI将建立在处理代码的当前文本输出接口之上。

我觉得应该可以以某种方式使用某个线程,但我不确定如何在不妨碍性能/引入线程不安全操作的情况下拦截对stdout的调用。

这可能吗?任何建议都会非常感谢。

1 个答案:

答案 0 :(得分:2)

我在这上面写了一些StackOverflow文档。当我有空的时候,我会尽快写一些更高级的例子。

Introduction to Progress Bars

希望这会有所帮助:)