我发现了几个看起来与此类似的问题,例如:
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
方法同时设置LogInWidget
和DataTableWidget
(即,如果用户密码正确,则使用
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/