Hello World / plɹoM ollǝH

Programmers Live in Vain

QDialogを継承したダイアログ作成

QDialogButtonBoxを使うようにするとAccept, Rejectを使って直感的にDialogクラスとやりとりできるし、キーを押したときの挙動も統一できる(Enter押すとAcceptとか)。

class MyDialog(QDialog):
  def __init__():
    super().__init__()
    buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
    buttons.accepted.connect(self.accept)
    buttons.rejected.connect(self.reject)
    lo = QVboxLayout()
    lo.addWidget(buttons)
    self.setLayout(lo)

diag = MyDialog()
diag.exec_()
if diag.result() == QDialog.Accepted:
  print('ok')
else:
  print('cancel')