gpt4 book ai didi

python - 在PyQt5中使用QMessageBox重启我的游戏或退出应用程序

转载 作者:行者123 更新时间:2023-11-28 21:45:01 24 4
gpt4 key购买 nike

我有一个用 PyQt5 制作的内存游戏。当用户获胜时,我想显示一条包含三个选项(按钮)的消息:

  1. '再玩一次'
  2. '换卡'
  3. '退出'

我认为实现它的方法是使用 QMessageBox,但我不明白如何正确使用它。我知道它必须是这样的:

reply = QMessageBox.question(self,
'title',
'text',
button1 | button2 | button3,
defaultButton)

if reply == button1:
# play again
elif reply == button2:
# change cards
else:
# close application

我也知道存在StandardButtons,我可以用它来退出(QMessageBox.Close,但我不确定),但我不知道如何我添加它们和其他自定义按钮以使其正常工作。

编辑 1

好吧,我认为我朝着正确的方向迈出了一些步伐,尽管仍然缺少一些东西。我能够将自定义按钮添加到我的 QMessageBox,当其中一个按钮被点击时,我能够打印 一些东西,但是我之后调用的任何方法都没有做任何事情。此外,如果选择“退出”,它只会关闭消息框(我使用的是 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.methodnamebutton.clicked.connect(self.methodname),但均无效。

最佳答案

你似乎已经解决了大部分问题,但这里有一个完整的例子:

def showMessageBox(self):
msg = QtWidgets.QMessageBox(self)
msg.setIcon(QtWidgets.QMessageBox.Question)
msg.setWindowTitle('Prompt')
msg.setText('Please choose an option:')
play = msg.addButton(
'Play Again', QtWidgets.QMessageBox.AcceptRole)
change = msg.addButton(
'Change Cards', QtWidgets.QMessageBox.AcceptRole)
quit = msg.addButton(
'Quit', QtWidgets.QMessageBox.RejectRole)
msg.setDefaultButton(play)
msg.exec_()
msg.deleteLater()
if msg.clickedButton() is play:
print('RESTART')
self.restart()
elif msg.clickedButton() is change:
print('CHANGE')
self.showDialog()
else:
self.close()

关于python - 在PyQt5中使用QMessageBox重启我的游戏或退出应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40155235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com