PyQt未更新标签

5

我创建了一个简单的应用程序,使用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个回答

11
你可能需要在更改标签文本后强制处理事件。尝试添加以下内容:

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

QApplication.processEvents()

设置标签文本后。

请注意,由于我不知道的某种原因,PyQt和PySide都倾向于在processEvents方面存在问题,有时需要多次执行才能生效。因此,如果添加了单个processEvents()后仍无法正常工作,请尝试添加两次甚至多次。


这项工作,加1分提到我可能需要多次完成它。 - hoodakaushal
很高兴能帮忙,那就继续接受答案吧 :) - Andrzej Pronobis
目前似乎有时间限制,我暂时无法接受,但一旦能够接受,我会立即处理。 - hoodakaushal
没错,我自己也是完全新手。 - Andrzej Pronobis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接