Python 禁用pyqt中的窗口功能

Python 禁用pyqt中的窗口功能,python,qt,user-interface,pyqt,Python,Qt,User Interface,Pyqt,我用python和Qt库创建了一个QMainWindow。当用户单击关闭按钮时,我会提示一个警告QMessageBox(是/否)。我想完全禁用主窗口的功能,直到用户选择是或否-第二个窗口-。(我想要像“冻结”主窗口这样的东西。) 我在主窗口中尝试了“self.setEnabled(False)”,但用户仍然可以单击最小化和最大化按钮 提前谢谢。您需要的是一个模式对话框。请参阅QDialog的文档以及模态对话框详细说明中的部分。模式对话框接管了用户界面,因此它是唯一与用户交互的点,直到它被取消,而

我用python和Qt库创建了一个QMainWindow。当用户单击关闭按钮时,我会提示一个警告QMessageBox(是/否)。我想完全禁用主窗口的功能,直到用户选择是或否-第二个窗口-。(我想要像“冻结”主窗口这样的东西。) 我在主窗口中尝试了“self.setEnabled(False)”,但用户仍然可以单击最小化和最大化按钮


提前谢谢。

您需要的是一个模式对话框。请参阅QDialog的文档以及模态对话框详细说明中的部分。模式对话框接管了用户界面,因此它是唯一与用户交互的点,直到它被取消,而非模式对话框允许与应用程序的其他窗口继续交互。这些文档讨论了创建对话模式的各种方法以及每种方法的优缺点


尝试在构造函数上设置窗口模态。以下是一个例子:

def _init_(self):
    self.setWindowModality(QtCore.Qt.ApplicationModal))

Nicolescu的答案完美且有效。 当您打开popup/modal(QWidgets.QWidget)窗口,并希望禁用父窗口活动,直到子窗口打开为止,只需使用hist示例

def初始化(自):
self.setWindowModal(QtCore.Qt.applicationModel))

您可能是对的,但我无法让它工作。我在对话框中使用了“setWindowModal(QtCore.Qt.ApplicationModal)”。当用户单击关闭按钮后创建对话框时,但在调用
show()
exec()
之前,调用
Dialog.setModal(True)
使对话框成为模态。仍然不工作。这就是我所说的,当单击一个特定的按钮时-Dialog=窗口,Dialog=实现Dialog的python文件-:Dialog=QtGui.QDialog()ui=Dialog.ui\u Dialog()ui.setupUi(Dialog)Dialog.setModal(True)Dialog.exec(),如果使用Dialog.setModal()您应该按照文档使用show()打开对话框。如果使用对话框的exec_()函数打开对话框,则无需将其设置为模态或禁用主窗口等。。你的代码中可能有一些不必要的东西把事情搞得一团糟,但是没有更多的信息很难说。不为我工作。我正在使用linux。你能提供一个有效的例子吗?Thx总是尝试在答案中添加新的内容。你的答案只是@Nicolescu的另一个答案的重复