《Python Qt GUI与数据可视化编程》第5章 事件处理

第5章 事件处理

基于窗体(Widget)的应用程序都是由事件(event)驱动的,鼠标单击、按下某个按键、重绘某个组件、最小化窗口都会产生相应的事件,应用程序对这些事件作出相应的响应处理以实现程序的功能。本章介绍PyQt5中事件的处理方法,包括:

  • 常见的特定事件的处理函数及其使用方法。
  • 使用event()函数拦截QWidget窗体的事件,然后进行识别和分发处理的方法。
  • 使用事件过滤器进行事件拦截和处理的方法。
  • 拖放操作的实现方法。

5.1 缺省事件处理

在PyQt5中,事件是一种对象,由抽象类QEvent表示。QEvent还有很多子类表示具体的事件,如QKeyEvent表示按键事件,QMouseEvent表示鼠标事件,QPaintEvent表示窗体绘制事件。

当一个事件发生时,PyQt5会根据事件的具体类型用QEvent相应的子类创建一个事件实例对象,然后传递给产生事件的对象的event()函数进行处理。QObject类及其子类都可以进行事件的处理,但主要还是窗体类(QWidget及其子类)中用到事件处理。

表5-1 常用的事件缺省处理函数

缺省函数名称

触发时机

参数event类型

mousePressEvent()

鼠标按键按下时触发

QMouseEvent

mouseReleaseEvent()

鼠标按键释放时触发

QMouseEvent

mouseMoveEvent()

鼠标移动时触发

QMouseEvent

mouseDoubleClickEvent()

鼠标双击时触发

QMouseEvent

keyPressEvent()

键盘按键按下时触发

QKeyEvent

keyReleaseEvent()

键盘按键释放时触发

QKeyEvent

paintEvent()

在界面需要重新绘制时触发

QPaintEvent

closeEvent()

一个窗体关闭时触发,例如窗口关闭时

QCloseEvent

showEvent()

一个窗体显示时触发,例如一个窗口显示时

QShowEvent

hideEvent()

一个窗体隐藏时触发,例如一个窗口最小化时

QHideEvent

resizeEvent()

组件改变大小时触发,例如一个窗口改变大小时

QResizeEvent

focusInEvent()

当一个组件获得键盘焦点时触发,如一个QLineEdit组件获得输入焦点

QFocusEvent

focusOutEvent()

当一个组件失去键盘焦点时触发,如一个QLineEdit组件失去输入焦点

QFocusEvent

enterEvent()

当鼠标进入组件的屏幕空间时触发,例如鼠标移动到一个QPushButton组件上

QEvent

leaveEvent()

当鼠标离开组件的屏幕空间时触发,例如鼠标离开一个QPushButton组件

QEvent

dragEnterEvent()

拖动操作正在进行,鼠标移动到组件上方时触发

QDragEnterEvent

dragLeaveEvent()

拖动操作正在进行,鼠标移出组件上方时触发

QDragLeaveEvent

dragMoveEvent()

拖动操作正在进行,鼠标移动时触发

QDragMoveEvent

dropEvent()

当拖动操作在某个组件上放下时触发

QDropEvent

图5-1 实例Demo5_1运行时界面

事件与信号是有区别的,但是也有关联。Qt为某个界面组件定义的信号通常是对某个事件的封装,例如QPushButton有clicked()信号和clicked(bool)信号,就可以看做是对mouseReleaseEvent()事件的不同封装。

但是某些时候,一个界面组件无法提供需要的信号,例如QLabel没有doubleClicked()信号,就无法通过信号与槽的方式实现QLabel组件的鼠标双击响应。但是,可以通过事件处理和自定义信号创建一个具有doubleClicked()信号的新的标签类。

5.2 事件拦截与事件过滤

一个界面组件产生的事件首先会发送给其event()函数做处理,如果event()函数不做任何处理,就自动调用事件对应的缺省处理函数。根据这个特性,可以在event()函数里做一些事件屏蔽或预处理工作。

PyQt5的事件处理还提供了一个强大的功能:事件过滤器(event filter),可以将一个对象的事件委托给另一个对象来监测并处理。

图5-5 实例Demo5_4运行时界面

5.3 拖放事件与拖放操作

拖放过程由两个操作组成:拖动(drag)和放置(drop)。被拖动的组件称为拖动点(drag site),接收拖动操作的组件称为放置点(drop site)。拖动点与放置点可以是不同的组件,甚至是不同的应用程序,也可以是同一个组件。

本节通过实例Demo5_5演示一个drop site功能的实现,这是一个比较实用的实例。实例运行时界面如图5-6所示,从Windows资源管理器中拖动一个JPG图片文件到实例程序窗口上,实例程序会显示拖动事件的mimeData数据,并显示图片。实例程序窗口只接受JPG文件,其他文件一律不接受。

图5-6 从Windows的资源管理器里拖一个jpg图片文件到示例Demo5_5的窗口

5.4 具有拖放操作功能的组件

本节的实例程序Demo5_6演示了QListWidget、QTableWidget、QTreeWidget的拖放操作功能,程序运行时界面如图5-7所示,有四个具有拖放操作功能的界面组件。在窗体上方还可以对这4个界面组件进行拖放操作相关的设置。在“设置对象”分组框里选择一个对象后,在“拖放参数设置”框里会显示这个组件的4个属性的值,也可以设置对象的这4个拖放操作属性。拖放操作的4个属性的设置影响到组件的拖放操作的特性

图5-7 示例Demo5_6,具有拖放操作的界面组件

 

<上一章>                 <回主页>                 <下一章>

### 回答1: PythonQt GUI都是非常流行的编程工具,而数据可视化编程则是一个非常热门的领域。因此,结合这三者,Python Qt GUI数据可视化编程完整版PDF可以帮助开发人员更好地了解和掌握这个领域的知识和技能。 Python是一种解释性语言,具有极高的可读性和易于学习的特点,因此成为了数据可视化编程中广泛使用的语言之一。而Qt GUI是一个用C++编写的跨平台开发框架,其也提供了Python的绑定,因此可以轻松地使用Python进行GUI编程数据可视化编程是通过将数据转换为图形化形式,让用户更容易理解和分析数据的过程。PythonQt GUI可以数据可视化工具如Matplotlib、Seaborn、Plotly等集成使用,在数据可视化方面提供丰富的功能和工具,方便开发人员进行数据呈现和分析。 这本完整版PDF的优势在于它从入门到进阶都涵盖了Python Qt GUI数据可视化编程的重要基础知识和实用技能,包括Qt GUI的界面设计、事件处理、布局管理等方面,以及数据可视化Python库的使用、图表的设计、交互操作的实现等方面。此外,PDF中还介绍了Qt Designer等可视化工具的使用,使读者能够更好地理解和实践这些概念。 综上所述,Python Qt GUI数据可视化编程完整版PDF是一本非常有价值的教材,它将这些技术整合在一起,帮助开发人员掌握这些强大的工具和技能,为他们在实践中取得更大的成功打下坚实的基础。 ### 回答2: Python是一种流行的编程语言,被广泛应用于各种领域。在图形用户界面(GUI)和数据可视化编程方面,Python有许多优秀的工具可供选择。其中,Qt是一个开源的GUI框架,可以用于创建跨平台的图形用户界面,而PyQt则是Qt的一个Python绑定库,可以让开发者使用Python来编写Qt应用程序。 在Python Qt GUI方面,本书提供了详细的介绍和实例,涵盖了Qt GUI的基础知识、应用程序的设计、事件处理、样式表、布局管理器、Qt Designer等方面。通过学习本书,读者可以了解到如何使用PythonQt来创建漂亮而功能强大的应用程序,并掌握Qt提供的各种工具和技术。 在数据可视化编程方面,Python也有很多优秀的库可供选择。其中,matplotlib是一个流行的数据可视化库,可以用于创建各种类型的图表,包括折线图、散点图、柱状图、饼图等等。此外,还有Seaborn、Bokeh、Plotly等其他库,可以用于创建更加高级的可视化效果。 本书也提供了对数据可视化方面的详细介绍和实例,包括matplotlib的基础知识、绘图、子图、图例、颜色、标签、注释、3D绘图等方面。通过学习本书,读者可以了解到如何使用Python来绘制各种类型的图表,并掌握各种可视化库的使用方法和技巧。 总之,Python Qt GUI数据可视化编程完整版pdf是一本非常实用和实用的书籍,适合想要深入学习PythonGUI数据可视化方面的读者。无论是开发桌面应用程序还是进行数据分析和可视化,本书都是一个非常好的学习资料。 ### 回答3: Python是一种功能强大的编程语言,广泛应用于许多领域。其中,Python在图形用户界面(GUI)和数据可视化方面的功能尤为突出,而QT则是一个流行的GUI开发框架。因此,许多开发者使用PythonQT来编写自己的GUI应用程序和数据可视化工具。 Python QT GUI数据可视化编程完整版PDF涵盖了PythonQT的核心概念以及数据可视化的基础知识。这本书适合初学者和有经验的开发者阅读,可以帮助他们快速入门并掌握这些技术。书中介绍了Python的基本语法和数据结构,通过这些知识来编写GUI应用程序和数据可视化工具。 在书中,开发者可以学习到如何使用QT Designer设计和创建GUI界面,并使用Python代码将其连接到应用程序。此外,本书还介绍了如何使用一些流行的数据可视化库(如Matplotlib和Seaborn)来创建各种类型的图表,帮助用户更好地理解和呈现数据。 此外, Python QT GUI数据可视化编程完整版PDF还使用实用的案例来演示相关的技术,包括创建简单的计算器应用程序和实现数据可视化并交互地操作数据。这些案例不仅有助于理解PythonQT的基础知识,而且可以帮助开发者在实际应用中解决实际问题。 总之,如果您是一个想要学习PythonQT编程以及数据可视化的开发者, Python QT GUI数据可视化编程完整版PDF是一个非常好的入门资源。通过它,您可以快速掌握这些技能,并开始在自己的项目中应用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值