PyQt 不更新标签
PyQt Not updating label
我创建了一个简单的应用程序来使用 Paramiko 和 SFTP 传输文件。我还想要一个状态栏(一个 QLabel),以便在我 downloading/uploading 时通知用户。所以,我的上传功能看起来像这样:
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')
请注意,在开始上传之前,我将状态栏更改为正在上传,上传完成后,我将其更改为上传完成。
然而,实际发生的是 "Uploading" 消息从未显示在标签上 - 它直接转到 "Upload Finished"。我怀疑这是因为更改仅在函数 returns 之后发生。
如何在上传过程开始时更改标签?
您可能需要在更改标签文本后强制处理事件。尝试添加:
QApplication.processEvents()
设置标签文本后。
请注意,由于我不知道的原因,PyQt 和 PySide 都倾向于在 processEvents
上出现问题,有时需要执行多次才能生效。所以,如果加了一个还不行processEvents()
,试试加两次,甚至多次。
我创建了一个简单的应用程序来使用 Paramiko 和 SFTP 传输文件。我还想要一个状态栏(一个 QLabel),以便在我 downloading/uploading 时通知用户。所以,我的上传功能看起来像这样:
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')
请注意,在开始上传之前,我将状态栏更改为正在上传,上传完成后,我将其更改为上传完成。
然而,实际发生的是 "Uploading" 消息从未显示在标签上 - 它直接转到 "Upload Finished"。我怀疑这是因为更改仅在函数 returns 之后发生。
如何在上传过程开始时更改标签?
您可能需要在更改标签文本后强制处理事件。尝试添加:
QApplication.processEvents()
设置标签文本后。
请注意,由于我不知道的原因,PyQt 和 PySide 都倾向于在 processEvents
上出现问题,有时需要执行多次才能生效。所以,如果加了一个还不行processEvents()
,试试加两次,甚至多次。