私はPyQt5で作られたメモリゲームを持っています。PyQt5のQMessageBoxを使ってゲームを再開するか、アプリケーションを終了する
- 'もう一度プレイ'
- 'チェンジカード'
- '終了'
I:ユーザーが勝った場合、私は3つのオプション(ボタン)を使用して、メッセージを表示したいですこれを実装する方法はQMessageBoxを使うことだと思いますが、正しく使用する方法を理解できませんでした。私もそこに私が出て行くために使用することができますStandardButtons
、存在する(QMessageBox.Close
を、私はわからない)知っているが、私はそれらを追加することができますかわからない
reply = QMessageBox.question(self,
'title',
'text',
button1 | button2 | button3,
defaultButton)
if reply == button1:
# play again
elif reply == button2:
# change cards
else:
# close application
:私はそれはのようなものでなければなら知っていますそれを動作させるために他のカスタムボタンを使用します。
EDIT 1
[OK]を、私は何かが欠けてSTILているが、私は、正しい方向に向けていくつかのステップをしたと思います。 QMessageBox
にカスタムボタンを追加できましたが、print
のいずれかをクリックすると何かが表示されますが、後で呼び出す方法は何もしません。また、 'quit'が選択されている場合は、メッセージボックスを閉じます(私はQCloseEvent
メソッドを使用していますが、それは間違っている可能性があります)。ここで
は、いくつかのコメントと一緒に更新されたコードです:あなたが見ることができるように
msgBox = QMessageBox()
msgBox.setStandardButtons(QMessageBox.Close)
restartBtn = msgBox.addButton('play again', QMessageBox.ActionRole)
changeBtn = msgBox.addButton('change cards', QMessageBox.ActionRole)
ret = msgBox.exec()
if ret == QMessageBox.Close:
QCloseEvent() # should close the app, but it closes the message box
elif msgBox.clickedButton() == restartBtn:
print('RESTART')
self.restart # should call 'restart' method, but it doesn't
elif msgBox.clickedButton() == changeBtn:
print('CHANGE')
changeBtn.clicked.connect(self.showDialog) # should call 'showDialog' method, but it doesn't
、私はself.methodname
とし、button.clicked.connect(self.methodname)
と両方試してみましたが、どれも働きました。
私自身の回答が完了しました。ありがとうございました)! – umbe1987