PyQt不更新标签

时间:2015-06-04 08:50:10

标签: python pyqt

我创建了一个使用Paramiko和SFTP传输文件的简单应用程序。我还希望有一个状态栏(QLabel),以便在我下载/上传内容时通知用户。所以,我上传的功能看起来像这样:

def upload(self):
        self.statusLabel.setText('Uploading')
        local = str(self.uploadLineEdit.text())
        filename = os.path.basename(local)
        remote = "/home/" + self.userName + "/testdata/" + filename
        self.ftp.put(local, remote)
        self.uploadedFileName = filename
        self.statusLabel.setText('Upload Finished')

请注意,在开始上传之前,我将状态栏更改为上传,上传完成后,我将其更改为已完成上传。

然而,实际发生的事情是“上传”消息永远不会显示在标签上 - 它只是直接进入“上传完成”。我怀疑这是因为只有在函数返回后才会发生更改。

如何在上传过程开始时更改标签?

1 个答案:

答案 0 :(得分:3)

您可能需要在更改标签文本后强制处理事件。尝试添加:

QApplication.processEvents()

设置标签文本后。

请注意,由于我不知道的原因,PyQt和PySide都会遇到processEvents的问题,有时需要多次执行才能生效。因此,如果在添加单个processEvents()后它无效,请尝试将其添加两次,甚至多次。