【PyQt5 学习记录】006:重写窗口事件及QMessageBox
#!/usr/bin/env python import sys
from PyQt5.QtWidgets import (QApplication,
QMainWindow,
QMessageBox)
from PyQt5.QtCore import Qt class Window(QMainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent, Qt.Window) self.status = self.statusBar()
self.init_ui() def init_ui(self):
# 在程序窗口显示之前弹出对话框:
message = QMessageBox()
# 对话框图标设置:
message.setIcon(QMessageBox.Information)
# 设置对话框标题:
message.setWindowTitle("开始")
# 设置对话框文本:
message.setText("软件运行。")
# 设置对话框信息文本:
message.setInformativeText("这是一个重写窗口事件的记录。")
# 显示对话框:
message.exec_() self.resize(500, 450)
# 窗口置顶:
self.setWindowFlag(Qt.WindowStaysOnTopHint)
self.show() def moveEvent(self, *args, **kwargs):
# 重写移动事件:
# 在状态栏显示窗口坐标
self.status.showMessage("窗口坐标: X = {0} | y = {1}".format(self.x(), self.y())) def resizeEvent(self, event):
# 重写改变窗口尺寸事件:
# 在状态栏显示窗口尺寸
self.status.showMessage("窗口尺寸:{0} × {1}".format(self.width(), self.height())) def closeEvent(self, event):
# 重写关闭事件,确认是否真的要关闭:
self.status.showMessage("关闭提醒")
message = QMessageBox()
# 置顶显示对话框:
message.setWindowFlag(Qt.WindowStaysOnTopHint)
message.setIcon(QMessageBox.Warning)
message.setText("真的要退出吗?")
# 自定义对话框按钮:
# 必须要指定按钮的 Role 属性,不能忘
message.addButton("是的,我要退出!", QMessageBox.AcceptRole)
msg_no = message.addButton("等等,我再想想!", QMessageBox.NoRole)
# 设置默认按钮:
message.setDefaultButton(msg_no)
# 接收按下对话框按钮的信息:
reply = message.exec_()
# 第一个按钮返回 0 ,第二个返回 1 ,以此类推:
if reply == 0:
# 确认,退出程序:
event.accept()
# 也可以通过按钮的 Role 属性判断
if reply == QMessageBox.NoRole:
# 取消,不退出程序:
event.ignore() if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_())
程序运行时先弹出对话框:

点击 OK 按钮后出现主窗口:

点击关闭按钮时会出现确认对话框:

【PyQt5 学习记录】006:重写窗口事件及QMessageBox的更多相关文章
- Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)
PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...
- 【PyQt5 学习记录】008:改变窗口样式之二
super(MainWindow, self).__init__(parent, flags=Qt.Widget) 首先需要关闭窗口的默认样式,以方便定时想要的样式: self.setWindowFl ...
- 【PyQt5 学习记录】007:改变窗口样式之一
class MainWindow(QMainWindow): 2 def __init__(self, parent=None): 3 super(MainWindow, self).__init__ ...
- 【PyQt5 学习记录】001:第一个界面
PyQt5 的安装很简单: pip3 install PyQt5 然后就是写一个最简单的界面试试手: import sys from PyQt5.QtWidgets import QApplicati ...
- 【PyQt5 学习记录】010:QSplitter
import sys from PyQt5.QtWidgets import (QApplication, QWidget, QSplitter, QTextEdit, QPushButton, QL ...
- 【PyQt5 学习记录】005:QMainWindow 及状态栏、菜单栏和工具栏
#!/usr/bin/env python import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QA ...
- 【PyQt5 学习记录】003:水平布局和获取屏幕尺寸
#!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PySide2.QtWidgets import (QApplication, QW ...
- 【PyQt5 学习记录】011:使用 QListWidet 创建列表
使用 QListWidet 创建列表 作者: 八月未见 博客: https://www.cnblogs.com/jmtm/ 创建列表: list_widget = QListWidget() 插入项目 ...
- 【PyQt5 学习记录】004:简单QThread笔记
在文本编辑框中每隔几秒添加一行文本,代码如下: #!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PyQt5.QtWidgets im ...
随机推荐
- Concurrent包工具类使用
一.读写锁 传统的同步锁就是独占式锁,当线程使用资源时候保持独占,无论读写.当人们发现请求队列(假设)中相邻请求为读-读的时候,阻塞是一种浪费资源的操作.比如公告板,所有路过的人(请求)都是读操作,并 ...
- objc_msgSend 作用
C 的函数调用方式 C 语言使用静态绑定,即在编译器就可以决定运行时所应调用的函数. 编译器在编译代码的时候就已经知道程序中有相应的函数,并直接生成调用函数的指令.函数地址硬编码在指令之中. OC 中 ...
- css之IE hack 方法[ IE6 - IE9]
ps: 由于近来需要研究IE下兼容问题,今天又再次翻起起这些针对IE的hack,于是决定写下这篇笔记,记录下这些本该献祭级浏览器下的处理方法,用于备忘 一.IE10以及以下版本均会生效(ie edge ...
- AsyncTask的前世今生
先看下Java Threading Framework的类图: Callable与Runnable类似,差别在Callable具有返回值,共同点是两个都是执行体,一般都抽象为任务处理. ...
- 编译Qt-mingw使用的opencv
set path=D:\dev\IDE\Qt5.7.0\Tools\mingw530_32\bin;%path% cd build_mingw530_32 cmake -G "MinGW M ...
- spring boot的静态资源加载
1.spring boot默认资源处理 Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. spring boot默认加载文 ...
- 正则中str.match(pattern)与pattern.exec(str)的区别
这两个函数除了调用对象以及参数不同之外,<javascript高级程序设计>中对exec描述比较详细,对match只是说返回数组跟exec一样.书中并没有说只说了正则在非全局模式下的情况, ...
- Eclipse打不开 提示an error has occurred.see the log file
有时由于Eclipse卡死,强制关闭之后会出现打不开的情况.弹窗提示: 查看log文件,发现有这样的信息: !MESSAGE The workspace exited with unsaved ch ...
- Javac语法糖之Enum类
枚举类在Javac中是被当作类来看待的. An enum type is implicitly final unless it contains at least one enum constant ...
- Go 协程编程感悟
0.GPM模型 1.默认地, Go所有的goroutines只能在一个线程里跑 ,除非告诉Go我们允许同时最多使用多个核,或者主动让出CPU时间,使goroutine可以抢占式的执行 2.如果当前go ...