我正在从当前窗口尝试使用QMessageBox创建一个简单的确认对话框。
我的代码是:
res = QMessageBox.question(QMessageBox(currentWindow), "Question", "Are you sure?", QMessageBox.Yes | QMessageBox.No)
问题是确认对话框出现在屏幕上的绝对随机位置中,而不是在父窗口的顶部。我在MacOS 10.12上观察到了这种现象。 QMessageBox.warning,QMessageBox.critical和其他静态方法也是如此。
是否可以将模式对话框的位置设置为相对于其父级?
答案 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
。