Вызов QDialog.reject() не имеет эффекта. Почему? Как закрыть диалог при выполнении определенных условий?Python

Программы на Python
Anonymous
Вызов QDialog.reject() не имеет эффекта. Почему? Как закрыть диалог при выполнении определенных условий?

Сообщение Anonymous »

Вызов QDialog.reject() не дает никакого эффекта. Чего мне не хватает?

Код: Выделить всё

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog, QVBoxLayout
class MyDialog(QDialog):
def __init__(self):
super().__init__()
print('MyDialog created')
self.setWindowTitle('My Dialog')
button = QPushButton('Close')
button.clicked.connect(self.accept)
self.setLayout(QVBoxLayout())
self.layout().addWidget(button)
self.reject()

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
button = QPushButton("Press Me!")
button.clicked.connect(self.show_dialog)
self.setCentralWidget(button)

def show_dialog(self):
d = MyDialog()
rv = d.exec()
if rv == QDialog.Accepted:
print('Dialog accepted')
else:
print('Dialog rejected')

app = QApplication([])
window = MainWindow()
window.show()
app.exec()
При запуске программы появляется диалоговое окно, и я могу нажать «Закрыть». Возвращаемое значение — «Принято». Я ожидаю, что диалоговое окно либо не отобразится, либо сразу закроется, а возвращаемое значение должно быть «Отклонено».
Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/789 ... -when-cert

Вернуться в «Python»