python pyqt5进度条指示器[重复]
Posted
技术标签:
【中文标题】python pyqt5进度条指示器[重复]【英文标题】:python pyqt5 progress bar indicator [duplicate] 【发布时间】:2021-06-14 12:56:07 【问题描述】:我有一个脚本,它从 .xlsx 文件中读取数据并将它们放入各种数据库表中。我想向用户显示正在进行的活动的百分比。处理时间是可变的,用户可能会觉得有问题。我在***上看过几篇文章,但它们都有明确的时间或数量。
它应该在 pyqt5 环境中工作。
【问题讨论】:
如果处理文件所需的时间完全未知,那么在逻辑上不可能显示进度。在这种情况下,您可以使用最大值设置为 0 的 QProgressBar(这正是未知进度总数的情况)。 除非您为文件对象编写一个包装器,假设实际读取文件的内容是逐步执行的,在这种情况下,您可以根据读取的字节数和自打开后经过的时间来估计完成时间文件。 注意:我不知道你用什么来读取 xls 文件,但如果你有办法在打开文件时读取电子表格的大小(和计数),你可以根据查询完成的统计数据进行估计。 我将计算读取和详细说明许多 xlsx 文件所需的平均时间,然后将使用此平均值设置 100% 时间。感谢您的建议,这是完成这项工作的最简单方法 【参考方案1】:tqdm 是适合您的软件包。
from tqdm import tqdm
from time import sleep
for i in tqdm(range(100)):
sleep(0.2)
要安装它,只需在您的活动环境中运行pip install tqdm
。
【讨论】:
OP明确表示:1.“处理时间是可变的”,因此使用预定义的范围是不合适的; 2.“它应该在pyqt5环境中工作”,所以我们可以假设会显示一个UI,使得终端/提示中的输出不理想。 @musicamante '处理时间是可变的'并不意味着您不需要预定义的范围。如果您可以向我解释如何在不知道“总数”(在本例中为预定义范围)的情况下定义百分比,那么您应该获得诺贝尔奖。这里的可变处理时间意味着如果您必须运行 5 个 SQL 查询,它们今天可能需要 1 小时,明天可能需要 10 小时。但是您仍然需要运行定义数量的查询来制作进度条。此外,没有什么能阻止您在 pyqt 中运行我的 sn-p,所以我建议您将 -1 移到问题而不是我的答案? 这正是我的观点:只有一个文件,数据量未定义,因此对于未定义数量的查询,处理时间未知。即使 OP 已经知道这一点,那么第二点仍然存在:Qt 已经提供了 QProgressBar,使用另一个外部模块(因此添加另一个依赖项)也需要打开终端或提示是没有意义的。没有什么能阻止(几乎)什么都没有,OP 甚至可以决定通过 jquery 使用 WebGL 在浏览器中显示进度,但这不是所要求的。以上是关于python pyqt5进度条指示器[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python 3.5,单独窗口中的 pyqt5 进度条 gui
python, PyQt5模块实现窗口GUI界面,进度条和按钮功能