94-多线程、线程池、定时器-事件处理

事件处理

Q为事件处理提供了两种机制:高级的信号/槽机制,低级的事件处理机制。

本节只介绍事件处理机制的processEvents()函数的使用方法,因为这个函数能够实现实时刷新,表现形式就像多线程一样。详细介绍信号/槽机制和事件处理机制的具体用法可以在其他章节查看。

虽然使用processEvents()函数可以刷新页面,但是一般不建议这样操作,而是把耗时的操作放到子线程中。

对于执行很耗时的程序来说,PySide6需要等待程序执行完毕才能进行下一步,这个过程表现在界面上就是卡顿;

如果在执行这个耗时的程序时不断运行 QApplication processEvents()函数,那么就可以实现一边执行耗时的程序,一边刷新页面的功能,给人的感觉就是程序运行很流畅。

因此,QApplication.processEvents)函数的使用方法就是,在主函数执行耗时操作的地方加入 QApplication.processEvents()函数。

# -*- coding: UTF-8 -*-
# File date: Hi_2023/3/13 23:13
# File_name: 04-processEvents例子.py


from PySide6.QtWidgets import QWidget,QPushButton,QApplication,QListWidget,QGridLayout
import sys
import time


class WinForm(QWidget):

    def __init__(self,parent=None):
        super(WinForm,self).__init__(parent)
        self.setWindowTitle("实时刷新界面例子")
        self.listFile = QListWidget()
        self.btnStart = QPushButton('开始')
        layout = QGridLayout(self)
        layout.addWidget(self.listFile,0,0,1,2)
        layout.addWidget(self.btnStart,1,1)
        self.btnStart.clicked.connect(self.slotAdd)
        self.setLayout(layout)

    def slotAdd(self):
        for n in range(10):
            str_n = 'File index {0}'.format(n)
            self.listFile.addItem(str_n)
            QApplication.processEvents()
            time.sleep(1)


if __name__ =="__main__":
    app = QApplication(sys.argv)
    form = WinForm()
    form.show()
    sys.exit(app.exec())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值