利用PyCharm开发平台和Python编程语言开发PyQt5界面程序,有时需要弹出信息框、警告框和咨询框,使用win32api和win32con在windows系统可以,但是在Linux系统不可以。为了解决这个问题,可以使用QMessageBox。
# pip install pywin32
import win32api
import win32con
# 提醒OK消息框
win32api.MessageBox(0, "这是一个测试提醒OK消息框", "提醒",win32con.MB_OK)
# 是否信息框
win32api.MessageBox(0, "这是一个测试是否信息框", "提醒",win32con.MB_YESNO)
# 说明信息框
win32api.MessageBox(0, "这是一个测试说明信息框", "提醒",win32con.MB_HELP)
# 警告信息框
win32api.MessageBox(0, "这是一个测试警告信息框", "提醒",win32con.MB_ICONWARNING)
# 疑问信息框
win32api.MessageBox(0, "这是一个测试疑问信息框", "提醒",win32con.MB_ICONQUESTION)
# 提示信息框
win32api.MessageBox(0, "这是一个测试提示信息框", "提醒",win32con.MB_ICONASTERISK)
# 确认信息框
win32api.MessageBox(0, "这是一个测试确认信息框", "提醒",win32con.MB_OKCANCEL)
# 重试信息框
win32api.MessageBox(0, "这是一个测试重试信息框", "提醒",win32con.MB_RETRYCANCEL)
# 是否取消信息框
win32api.MessageBox(0, "这是一个测试是否取消信息框", "提醒",win32con.MB_YESNOCANCEL)
一、新建一个工程MyMainTest,创建主对话框,添加2个按钮,并关联信号和槽函数。
二、主源代码如下:
"""
python主文件
"""
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QMessageBox
from PyQt5 import QtCore
import MyQTMainForm # 导入MyQTMainForm.py文件
class MyPyQTMainForm(QMainWindow, MyQTMainForm.Ui_MainWindow):
"""
主界面
"""
def __init__(self):
"""
初始化
"""
super(MyPyQTMainForm, self).__init__()
self.setupUi(self)
def center(self):
"""
定义一个函数使得窗口居中显示
"""
# 获取屏幕坐标系
screen = QDesktopWidget().screenGeometry()
# 获取窗口坐标系
size = self.geometry()
newLeft = (screen.width() - size.width()) / 2
newTop = (screen.height() - size.height()) / 2
self.move(int(newLeft), int(newTop))
def testInformationDialog(self):
"""
单击“信息框”按钮消息处理响应函数
"""
print("登录服务器成功!")
# 信息框
self.showInformationDialog("登录服务器成功!", "温馨提示")
def testWarningDialog(self):
"""
单击“警告框”按钮消息处理响应函数
"""
print("登录服务器失败!请检查服务器登录配置及服务器是否开启!")
# 警告信息框
self.showWarningDialog("登录服务器失败!请检查服务器登录配置及服务器是否开启!", "温馨提示")
def showInformationDialog(self, strText, strWindowTitle):
"""
弹出信息提示框
"""
msgBox = QMessageBox()
msgBox.setIcon(QMessageBox.Information)
msgBox.setText(strText)
msgBox.setWindowTitle(strWindowTitle)
# msgBox.setWindowIcon(QIcon("./images/tips.ico"))
msgBox.setWindowIcon(QIcon("tips.ico"))
msgBox.setStandardButtons(QMessageBox.Ok)
msgBox.exec()
def showWarningDialog(self, strText: str, strWindowTitle: str):
"""
弹出警告提示框
"""
msgBox = QMessageBox()
msgBox.setIcon(QMessageBox.Warning)
msgBox.setText(strText)
msgBox.setWindowTitle(strWindowTitle)
# msgBox.setWindowIcon(QIcon("./images/tips.ico"))
msgBox.setWindowIcon(QIcon("tips.ico"))
msgBox.setStandardButtons(QMessageBox.Ok)
msgBox.exec()
# 我们关闭窗口的时候,触发了QCloseEvent。我们需要重写closeEvent()事件处理程序。
# 重写closeEvent函数,使点击右上角的叉号关闭按钮时,弹框提示“Are you sure to quit?”
def closeEvent(self, event):
# 我们显示一个消息框,两个按钮:“是”和“不是”。第一个字符串出现在titlebar。
# 第二个字符串消息对话框中显示的文本。第三个参数指定按钮的组合出现在对话框中。
# 最后一个参数是默认按钮,这个是默认的按钮焦点。
reply = QMessageBox.question(self, '提示',
"您确定退出系统吗?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
# 处理返回值,如果单击Yes按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
"""=====================================
主函数
====================================="""
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建主窗口对象
myPyMainForm = MyPyQTMainForm()
# 主窗口显示在屏幕中间
myPyMainForm.center()
# 禁止最大化按钮
# myPyMainForm.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint)
# 禁止拉伸窗口大小
# myPyMainForm.setFixedSize(myPyMainForm.width(), myPyMainForm.height())
# 显示主界面
myPyMainForm.show()
sys.exit(app.exec_())
三、编译运行,分别单击“信息框”按钮和“警告框”按钮,弹出对应窗口如下:
四、单击主窗口右上角的“关闭“按钮时,弹出询问框如下。