如何在 python qt 设计器中显示带有两个按钮的消息

how to display a message with two buttons in python qt designer

我正在构建一个小型扫雷器克隆,我在这里有一个功能,用于用户单击炸弹按钮显示“砰”的事件,但我还想添加一个弹出菜单之类的功能提示用户他们输了,并为他们提供两个按钮,一个继续,另一个要求开始新游戏。

def buttonClickedkill(self):
    # sender() tells us who caused the action to take place
    clicked = self.sender()
    #letter=clicked.text()  # the buttons have the letters on them
    #print(f"Button -{letter}- was clicked!")
    # 1) Disable the button
    clicked.setEnabled(False)
    clicked.setText("boom")
    QMainWindow.__init__(self)

所以我想添加另一个功能,其中会弹出一个东西并显示类似内容:

sorry you struck a bomb and died!

continue? New Game!

“继续”和“新游戏”是两个按钮 我有一个新的游戏功能和所有。

能否请您提供必要的脚本,以便在单击其中一个按钮后立即关闭 window?

这是 QMessageBox 的确切用例。例如:

reply = QMessageBox.question(self, 'Title', 'You lost! Continue?')

此行使 window 弹出并阻止主 GUI,直到用户单击按钮。由于我选择了 QMessageBox.question,因此默认按钮是 "yes" 和 "no"。您可以询问 reply 变量用户是否单击了 "yes" (QMessageBox.Yes) 或 "no" (QMessageBox.No) 按钮。

工作示例:

import sys

from PyQt5.QtWidgets import (QApplication, QLabel, QMainWindow, 
                             QMessageBox, QPushButton, QVBoxLayout, 
                             QWidget)


class MyApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.widget = QWidget(self)
        self.setCentralWidget(self.widget)
        layout = QVBoxLayout()
        self.widget.setLayout(layout)

        self.button = QPushButton(parent=self, text="Click Me!")
        self.button.clicked.connect(self.button_clicked_kill)
        self.text = QLabel(parent=self, text='')

        layout.addWidget(self.button)
        layout.addWidget(self.text)

    def button_clicked_kill(self):
        reply = QMessageBox.question(self, 'Title', 'You lost! Continue?')
        if reply == QMessageBox.Yes:
            self.text.setText('User answered yes')
        if reply == QMessageBox.No:
            self.text.setText('User answered no')


if __name__ == '__main__':
    app = QApplication()
    gui = MyApp()
    gui.show()
    sys.exit(app.exec_())

生成: