Из текущего окна я пытаюсь создать простой диалог подтверждения, используя QMessageBox.
Мой код:
res = QMessageBox.question(QMessageBox(currentWindow), "Question", "Are you sure?", QMessageBox.Yes | QMessageBox.No)
Проблема в том, что диалог подтверждения появляется в абсолютно произвольном месте экрана, а не поверх родительского окна. Я наблюдаю такое поведение на MacOS 10.12. И это также относится к QMessageBox.warning, QMessageBox.critical и другим статическим методам.
Есть ли способ установить положение модального диалога относительно его родителя?
eyllanesc, пробовал, ничего не меняет.
Первый параметр QMessageBox::question()
— это родитель, который будет использоваться диалоговым окном. QDialog
центрирован (и модален) на своем родителе.
Выполняя QMessageBox.question(QMessageBox(currentWindow)
, вы передаете новый экземпляр QMessageBox
, который не отображается.
Вместо этого передайте currentWindow
:
res = QMessageBox.question(currentWindow, "Question", "Are you sure?", QMessageBox.Yes | QMessageBox.No)
Но вы должны быть уверены, что отображается currentWindow
, а не None
.
использовать
res = QMessageBox.question(currentWindow, "Question", "Are you sure?", QMessageBox.Yes | QMessageBox.No)