如何在pyqt中创建模态窗口?
我查看了文档,发现有个叫 'self.setWindowModality(QtCore.Qt.WindowModal)' 的东西。
我把这个功能加到了我的 'init' 函数里,但还是没办法创建一个模态对话框。
任何帮助都非常感谢,
谢谢你。
1 个回答
30
QDialog
有一个叫 setModal()
的功能,可以在这里找到相关信息。
根据文档的说明:
默认情况下,这个属性是
False
,这意味着调用show()
时,弹出的对话框是非模态的,也就是说用户可以在对话框打开的同时与其他窗口进行交互。如果把这个属性设置为真,就相当于把QWidget.windowModality
设置为Qt.ApplicationModal
,这时对话框会变成模态的,用户必须先处理这个对话框才能返回到其他窗口。
正如 @sebastian 提到的,你可以使用 exec()
。不过更好用的是 exec_()
,因为 sebastian 提到的那个是 Python 的调用。
示例:
my_dialog = QDialog(self)
my_dialog.exec_() # blocks all other windows until this window is closed.
如果这还不能解决你的问题,请把你的代码发上来,我会帮你看看。