如何在pyqt中创建模态窗口?

15 投票
1 回答
37662 浏览
提问于 2025-04-18 12:56

我查看了文档,发现有个叫 '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.

如果这还不能解决你的问题,请把你的代码发上来,我会帮你看看。

撰写回答