pyqt5 dialog弹出后阻止主页面操作
时间: 2024-12-24 08:39:49 浏览: 2
PyQt5中的`QDialog`通常用来创建非模态窗口,也就是一个独立于主线程之外的对话框。如果你希望在弹出对话框时暂停或阻止主页面的操作,可以使用`exec_()`方法将对话框作为单独线程运行,并设置其`modal=True`,使其变为模态窗口。
当一个模态对话框打开时,它会阻塞主线程,直到用户关闭对话框。这样,用户就无法继续交互主界面,直至处理完对话框的内容。以下是一个简单的例子:
```python
from PyQt5.QtWidgets import QApplication, QDialog, QPushButton
class MyDialog(QDialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.setWindowTitle('我的对话框')
button = QPushButton('确定', self)
button.clicked.connect(self.accept)
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
def main():
app = QApplication([])
# 主窗口
main_window = QMainWindow()
main_widget = QWidget(main_window)
layout = QVBoxLayout()
main_window.setCentralWidget(main_widget)
# 当点击某个按钮触发对话框
btn = QPushButton("打开对话框", main_widget)
btn.clicked.connect(lambda: MyDialog().exec_())
layout.addWidget(btn)
main_widget.setLayout(layout)
main_window.show()
# 应用程序进入事件循环
app.exec_()
if __name__ == '__main__':
main()
```
在这个例子中,当你点击"打开对话框"按钮时,主窗口会被暂时冻结,直到对话框关闭。
阅读全文