利用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 sysfrom PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QMessageBox
from PyQt5 import QtCoreimport 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()) / 2newTop = (screen.height() - size.height()) / 2self.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_())
三、编译运行,分别单击“信息框”按钮和“警告框”按钮,弹出对应窗口如下:
四、单击主窗口右上角的“关闭“按钮时,弹出询问框如下。
获取更多资料,请访问大土土随笔
如果本文对您有所帮助,请关注微信公众号“捷创源科技”。