Python高级进阶#007 pyqt5消息盒子QMessageBox

简介: Python高级进阶#007 pyqt5消息盒子QMessageBox

一、知识回顾



1.使用类进行pyqt5的gui开发封装

2.使用setGeometry函数:大小、位置

3.掌握类的继承与内部调用


一、Pyqt5界面基本写法



目标效果

点击按钮,出现消息选择框,处理消息选择框的点击结果

image.png

效果图


二、基础的类封装代码



import sys
from PyQt5.QtWidgets import QApplication,QWidget,QMessageBox,QPushButton
class MyClass(QWidget):
   def __init__(self):
     super().__init__()
     self.initUI()
   def initUI(self):
     self.setGeometry(300,200,400,300)
     self.setWindowTitle("刘金玉编程")
     btn=QPushButton("关闭窗体",self)
     btn.move(50,50)
     self.show()
if __name__=="__main__":
  app=QApplication(sys.argv)
  mc=MyClass()
  app.exec_()


三、消息盒子



我们开始使用类库QMessageBox

看看常见的不同的图标的消息类别:

   带有图标的消息盒子,图标可以是问号question,信息information,警告warning


注意:使用消息盒子后,最后会返回一个按钮类型的结果,这个结果也是我们人机交互的结果。


四、重写事件



重写关闭事件考虑思路:当点击关闭按钮的时候,执行的是窗体的关闭,而窗体的关闭等同于点击窗体右上角的关闭X的自带窗体按钮的效果,这个效果是Qwidget基类所实现的。提问:我们该如何实现我们自己需要的关闭时候的效果呢?

  • 重写父类方法。
  • 重写关闭事件的方法。


QMessageBox使用格式

具体问号使用格式:

QMessageBox.question(self,消息标题,消息内容,消息的按钮类型,首次打开后默认选中哪个按钮)

使用举例:

QMessageBox.question(self,"老刘提示您:","您真的要关闭窗体吗?",QMessageBox.Yes|QMessageBox.No,QMessageBox.No)


如何阻止事件的关闭呢?

利用传过来的事件对象

我们通过输出的形式,看到事件对象的属性和方法,猜测到具体的调用方法。

event.accept()同意关闭

event.ignore()忽律操作

if result==QMessageBox.Yes:

           event.accept()

else:

           event.ignore()

           QMessageBox.information(self,"消息","谢谢!")


五、总结强调



1.掌握的类的封装基本代码

2.掌握类的事件重写

3.掌握的事件对象的应用


本节知识源代码:

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QMessageBox,QPushButton
class MyClass(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setGeometry(300,200,400,300)
        self.setWindowTitle("刘金玉编程")
        btn=QPushButton("关闭窗体",self)
        btn.move(50,50)
        btn.clicked.connect(self.close)
        self.show()
    def closeEvent(self, event):
        print("老刘关闭的操作")
        result=QMessageBox.question(self,"老刘提示您:","您真的要关闭窗体吗?",QMessageBox.Yes|QMessageBox.No,QMessageBox.No)
        if result==QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
            QMessageBox.information(self,"消息","谢谢!")
if __name__=="__main__":
    app=QApplication(sys.argv)
    mc=MyClass()
    app.exec_()
相关文章
|
4月前
|
Python
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
209 1
|
2月前
|
数据可视化 IDE 开发工具
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
307 13
|
2月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
151 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
2月前
|
数据可视化 IDE Linux
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
321 2
|
2月前
|
数据可视化 IDE 开发者
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
248 1
|
2月前
|
数据可视化 数据处理 数据库
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
126 1
|
5月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
54 3
|
5月前
|
数据采集 Java C语言
Python面向对象的高级动态可解释型脚本语言简介
Python是一种面向对象的高级动态可解释型脚本语言。
42 3
|
5月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
【7月更文挑战第25天】在网络技术快速发展的背景下, Python因其简洁的语法和强大的库支持成为学习网络编程的理想选择。
76 5
|
5月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
67 2