PyQt5窗口事件(closeEvent、resizeEvent、moveEvent、keyPressEvent、focusInEvent等)使用方法

您所在的位置:网站首页 wakey软件使用方法 PyQt5窗口事件(closeEvent、resizeEvent、moveEvent、keyPressEvent、focusInEvent等)使用方法

PyQt5窗口事件(closeEvent、resizeEvent、moveEvent、keyPressEvent、focusInEvent等)使用方法

2024-06-17 23:23| 来源: 网络整理| 查看: 265

PyQt5是一个Python的GUI工具包,它提供了丰富的图形界面控件,同时也支持窗口事件。窗口事件是指在程序运行过程中,窗口的各种操作产生的事件响应。

PyQt5中提供了以下几种窗口事件:

closeEvent:窗口关闭事件 resizeEvent:窗口大小调整事件 moveEvent:窗口移动事件 keyPressEvent:键盘按下事件 keyReleaseEvent:键盘释放事件 focusInEvent:窗口获得焦点事件 focusOutEvent:窗口失去焦点事件 paintEvent:窗口重绘事件

下面我们来演示一下如何在PyQt5中使用窗口事件。首先我们需要导入PyQt5库:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton from PyQt5.QtCore import Qt import sys class MyMainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('Window Event') self.setGeometry(200, 200, 400, 300) label = QLabel('Hello PyQt5', self) label.setAlignment(Qt.AlignCenter) label.setGeometry(100, 100, 200, 30) button = QPushButton('Close', self) button.setGeometry(150, 200, 100, 30) button.clicked.connect(self.close) def closeEvent(self, event): reply = QMessageBox.question(self, 'Message', 'Are you sure to quit?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() def resizeEvent(self, event): print('Window resized to ({}, {})'.format(event.size().width(), event.size().height())) def moveEvent(self, event): print('Window moved to ({}, {})'.format(event.pos().x(), event.pos().y())) def keyPressEvent(self, event): print('Key {} pressed'.format(event.text())) def keyReleaseEvent(self, event): print('Key {} released'.format(event.text())) def focusInEvent(self, event): print('Window focus in') def focusOutEvent(self, event): print('Window focus out') def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) brush = QBrush(Qt.SolidPattern) painter.setBrush(brush) pen = QPen(Qt.NoPen) painter.setPen(pen) painter.drawRect(100, 100, 200, 100)

这个自定义的QMainWindow类中添加了一个标签和一个按钮,并重写了窗口事件的几个方法,用于打印出窗口的各种事件。

其中,closeEvent方法用于在窗口关闭时询问用户是否确认退出程序,resizeEvent方法和moveEvent方法用于在窗口大小或位置发生变化时打印出相应的信息,keyPressEvent方法和keyReleaseEvent方法用于在键盘按下或释放时打印出相应的信息,focusInEvent方法和focusOutEvent方法用于在窗口获得或失去焦点时打印出相应的信息,paintEvent方法用于在窗口需要重新绘制时绘制一个矩形。

接下来,我们创建一个QApplication实例,并显示自定义的QMainWindow窗口:

if __name__ == '__main__': app = QApplication(sys.argv) window = MyMainWindow() window.show() sys.exit(app.exec_())

最后,我们运行程序,点击按钮关闭窗口,拖动窗口改变大小和位置,按下键盘,让窗口获得和失去焦点,并观察控制台输出的相应信息。

通过这个演示,我们可以看到,在PyQt5中使用窗口事件可以实现各种窗口操作的响应,从而实现更加灵活的GUI界面。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3