QMessageBox.warning调用上的QMessageBox位置

时间:2019-05-28 08:02:54

标签: python macos pyqt

我正在从当前窗口尝试使用QMessageBox创建一个简单的确认对话框。

我的代码是:

res = QMessageBox.question(QMessageBox(currentWindow), "Question",  "Are you sure?", QMessageBox.Yes | QMessageBox.No)

问题是确认对话框出现在屏幕上的绝对随机位置中,而不是在父窗口的顶部。我在MacOS 10.12上观察到了这种现象。 QMessageBox.warning,QMessageBox.critical和其他静态方法也是如此。

是否可以将模式对话框的位置设置为相对于其父级?

1 个答案:

答案 0 :(得分:0)

QMessageBox::question()的第一个参数是该对话框将使用的父参数。 QDialog以其父代为中心(和模态)。

通过执行QMessageBox.question(QMessageBox(currentWindow),您传递了一个QMessageBox的新实例,该实例未显示。

改为通过currentWindow

res = QMessageBox.question(currentWindow, "Question", "Are you sure?", QMessageBox.Yes | QMessageBox.No)

但是,您需要确保显示的是currentWindow,而不是None