我发现了几个看起来与此类似的问题,例如:


Busy indication with PyQt progress bar
Progress bar with pyqt
Display installation progress in PyQt


但是大多数示例和答案都在1个GUI线程和1个数据处理线程上。

让我解释一下我的情况。

我有3节课:


MainWindow类(继承自QMainWindow类并充当主GUI)
LogInWidget类(继承自QWidget类。该类包含所有用户名/密码字段和进度条,请参见下图)




3.class DataTableWidget(继承自QWidget class.consistable组成一个显示数十万数据的表)

该程序的设计旨在使用户一旦通过LogInWidget登录到该程序,便可以看到DataTableWidget显示的所有数据。

我使用.setCentralWidget方法同时设置LogInWidgetDataTableWidget(即,如果用户密码正确,则使用

table = DataTableWidget ()
self.setCentralWidget(table)


显示表格。

我的问题是:当用户登录时,在看到数据表之前有一个很大的GUI冻结,因为要通过该表显示的数据条目太多。

因此,我想在程序完成加载表之前显示繁忙的进度栏(在我的LogInWidget上)。

我考虑过使用Qthread来完成它,但是既然这两个任务,显示进度条和创建DataTableWidget并将其设置为centralwidget都是GUI任务,那么我应该如何处理呢?

最佳答案

您必须将进度条值连接到DataTableWidget的信号。但这又假设DataTableWidget在渲染它时会多次生成此信号,这不太可能。也许您所需要的只是一种显示GUI繁忙的方法,例如在其两端之间来回移动的带有线条的bar。然后,您无需在两个小部件之间交换数据。

关于python - Python PyQt进度栏忙,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22692295/

10-10 09:22