PyQt 不更新标签

hoo*_*hal 4 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')
Run Code Online (Sandbox Code Playgroud)

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

然而,实际发生的是“上传”消息从未显示在标签上——它只是直接显示“上传完成”。我怀疑这是因为更改仅在函数返回后发生。

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

And*_*bis 8

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

QApplication.processEvents()
Run Code Online (Sandbox Code Playgroud)

设置标签文本后。

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