一、知识回顾
1.使用类进行pyqt5的gui开发封装
2.使用setGeometry函数:大小、位置
3.掌握类的继承与内部调用
一、Pyqt5界面基本写法
目标效果
点击按钮,出现消息选择框,处理消息选择框的点击结果
效果图
二、基础的类封装代码
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_()