msgBox = QMessageBox() 弹窗点确定后 就卡死了
时间: 2023-08-13 22:17:12 浏览: 305
如果你的代码是这样的:
```python
msgBox = QMessageBox()
msgBox.setText("这是一条消息!")
msgBox.exec_()
```
那么问题可能出在 `msgBox.exec_()` 这句代码上。因为这个函数是一个模态对话框,会阻塞当前线程,直到用户关闭了对话框为止。如果用户一直不关闭对话框,那么程序就会一直卡在这里。
解决办法是在 `exec_()` 函数前创建一个新的线程,并在这个线程中运行 `exec_()` 函数。这样即使对话框没有关闭,主线程也不会被阻塞,程序也不会死掉。
具体的代码实现如下:
```python
import threading
from PyQt5.QtWidgets import QApplication, QMessageBox
def showMessageBox():
msgBox = QMessageBox()
msgBox.setText("这是一条消息!")
msgBox.exec_()
app = QApplication([])
thread = threading.Thread(target=showMessageBox)
thread.start()
app.exec_()
```
这里我们使用了 Python 内置的线程库 `threading`,在新线程中执行 `showMessageBox()` 函数,而主线程则继续运行 `app.exec_()`。这样即使对话框没有关闭,主线程也不会被阻塞。
相关问题
msgBox = QMessageBox() 后不要退出程序
好的,你可以在 msgBox.exec_() 后加上 app.exec_(),这样程序会一直运行,直到用户关闭消息框。具体代码如下:
```python
msgBox = QMessageBox()
msgBox.setText("这是一条消息!")
msgBox.exec_()
app.exec_()
```
这样就可以保证程序不会在消息框弹出后立即退出。
QMessageBox * msgBox = new QMessageBox
`QMessageBox` 是 Qt 框架中的一个类,它用于创建标准的消息框,如警告、信息、错误或确认提示等。当你看到 `QMessageBox * msgBox = new QMessageBox` 这样的代码,通常是在 C++ 或者使用 Qt 开发环境中,你想创建一个新的消息框对象。
`msgBox` 是一个指向 `QMessageBox` 类的对象指针,`new` 关键字用来动态地分配内存并创建一个实例。你可以通过这个指针来设置消息的内容、图标类型(如 `QMessaageBox::Information`、`QMessaageBox::Warning` 等),以及响应按钮的行为,最后可以显示这个消息框给用户看。示例如下:
```cpp
QMessageBox::StandardButtons buttons = QMessageBox::Yes | QMessageBox::No;
QString text = "这是一个提示消息";
int result = msgBox->information(this, "标题", text, buttons);
if (result == QMessageBox::Yes) {
// 用户点击了"是"
} else if (result == QMessageBox::No) {
// 用户点击了"否"
}
```
阅读全文