pyqt6 QMessageBox如何实现耗时操作时阻塞用户操作,等该耗时操作完成后自动消失?
时间: 2024-04-09 10:27:42 浏览: 90
C#实现延时并自动关闭MessageBox的方法
5星 · 资源好评率100%
您可以使用QMessageBox的静态函数`QMessageBox::information`来显示一个信息框,并利用`QMessageBox::setStandardButtons`和`QMessageBox::setDefaultButton`来设置按钮。
要实现耗时操作时阻塞用户操作,您可以使用QMessageBox的`QMessageBox::show`函数将其以模态对话框的方式显示。这将阻塞用户对应用程序的其他操作,直到消息框关闭。
耗时操作完成后,您可以调用`QMessageBox::close`或者`QMessageBox::done`来关闭消息框。
以下是一个示例代码:
```python
from PyQt6.QtWidgets import QApplication, QMessageBox
import time
app = QApplication([])
msgBox = QMessageBox()
msgBox.setText("正在执行耗时操作...")
msgBox.setStandardButtons(QMessageBox.StandardButton.NoButton)
msgBox.setDefaultButton(QMessageBox.StandardButton.NoButton)
msgBox.show()
# 模拟耗时操作
time.sleep(5)
msgBox.close()
app.exec()
```
在这个例子中,我们首先创建一个QMessageBox,并设置了文本内容。然后,我们使用`show`函数将其显示为模态对话框,这将阻塞用户操作。接着,我们使用`time.sleep`模拟了一个耗时操作,这里是5秒钟的等待。最后,我们调用`close`函数来关闭消息框。
当耗时操作完成后,消息框会自动消失。请注意,为了能够显示消息框,您需要调用`app.exec()`来进入Qt的事件循环。
阅读全文