参考:https://zhuanlan.zhihu.com/p/138386185
https://www.jianshu.com/p/8fc44cea9bd8
一、对话框类型
QMessageBox.about():关于对话框对象
QMessageBox.information():消息对话框对象
QMessageBox.warning():警告对话框对象
QMessageBox.critical():错误对话框对象
QMessageBox.question():提问对话框对象
二、举例
关于对话框对象
def show_message(self):
QMessageBox.about(self, "关于", "这是一个关于对话框")
msg_box = QMessageBox(QMessageBox.About, '关于', '这是一个关于对话框')
msg_box.exec_()
消息对话框对象
QMessageBox.information(self, "标题", "我很喜欢学习python", QMessageBox.Yes)
#最后的Yes表示弹框的按钮显示为Yes,默认按钮显示为OK,不填QMessageBox.Yes即为默认
警告对话框对象
QMessageBox.warning(self, "警告", "这是一个警告对话框", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
错误对话框对象
QMessageBox.critical(self, "错误", "系统错误")
提问对话框对象
def closeEvent(self, event): #关闭窗口触发以下事件
a = QMessageBox.question(self, '退出', '你确定要退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) #"退出"代表的是弹出框的标题,"你确认退出.."表示弹出框的内容
if a == QMessageBox.Yes:
event.accept() #接受关闭事件
else:
event.ignore() #忽略关闭事件
# (直接放入相关程序执行完毕的后面的方法)
msg_box = QMessageBox(QMessageBox.Question, '退出', '你确定退出吗?') #退出表示弹出框标题,"你确定退出吗?"表示弹出框的内容
msg_box.exec_() #执行弹出框
与确定退出的事件绑定可以参考第一种方法
弹出对话框
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class QDialogDemo(QMainWindow):
def __init__(self):
super(QDialogDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("QDialog案例")
self.resize(300, 200)
# 设置文本内容 + 直接固定到主窗口
self.button = QPushButton("弹出对话框", self)
self.button.move(50, 50)
self.button.clicked.connect(self.showDialog)
def showDialog(self):
# 创建对话框控件,并在对话框中创建新的控件
dialog = QDialog()
button = QPushButton("确定", dialog)
# dialog的close方法作用是将对话框关闭
button.clicked.connect(dialog.close)
button.move(50, 50)
dialog.setWindowTitle("对话框")
# 让对话框以模式的状态显示,即触发对话框后,主窗口的控件时无法使用的
dialog.setWindowModality(Qt.ApplicationModal)
# 最后不要忘了调用exec来执行创建的对话框
dialog.exec()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = QDialogDemo()
main.show()
sys.exit(app.exec_())