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