【问题标题】:PyQt Not updating labelPyQt 不更新标签
【发布时间】:2019-09-09 05:19:32
【问题描述】:

我创建了一个简单的应用程序来使用 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')

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

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

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

【问题讨论】:

    标签: python pyqt


    【解决方案1】:

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

    QApplication.processEvents()
    

    设置标签文本后。

    请注意,由于我不知道的原因,PyQt 和 PySide 都倾向于在 processEvents 上出现问题,有时需要执行多次才能生效。所以,如果添加一个processEvents()后还是不行的话,可以尝试添加两次,甚至多次。

    【讨论】:

    • 这项工作,+1 提到我可能不得不多次这样做。
    • 很高兴能提供帮助,请继续接受答案:)
    • 好像有时间限制,暂时不能接受,有能力就尽快接受。
    • 没错,我自己对此并不陌生。
    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2014-08-01
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多