【发布时间】:2016-10-29 17:51:27
【问题描述】:
我有一个程序,它使用嵌入式 matplotlib 绘图绘制数据并添加有用的可视化。问题是matplotlib 在这些可视化很繁重时可能会非常慢,以至于主窗口挂起。我不能在不同的线程或进程中添加这些图形,因为 PyQt 禁止从主线程以外的任何地方更新主窗口(有充分的理由),所以我希望有另一个窗口,基本上是一个永久进度条,我可以绘制完成后杀死:
# Creates a new window with an endless progress bar
class LoadingWindow(QtGui.QMainWindow):
def __init__(self):
super(LoadingWindow, self).__init__()
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
main_widget = QtGui.QWidget(self)
layout = QtGui.QVBoxLayout()
layout.addWidget(QtGui.QLabel("Graphing now. Please wait...", self))
progress = QtGui.QProgressBar(self)
progress.setMinimum(0)
progress.setMaximum(0)
layout.addWidget(progress)
main_widget.setLayout(layout)
main_widget.setFocus()
self.setCentralWidget(main_widget)
self.show()
...但是当我创建此类的一个实例时,加载栏没有显示并且两个窗口都挂起。有没有办法让这个窗口出现在一个新的线程或进程中?或者有没有更好的方法来解决这个问题?
【问题讨论】:
标签: python multithreading matplotlib pyqt pyqt4