PyQt5事件处理之定时在控件上显示信息

有时候为了体现延时效果,或者是多事件处理,需要在窗口的文本编辑框或者表格等控件中,延迟几秒或每隔几秒显示输出一段数据,又或者可以说是每隔几秒执行下一行代码!要实现这种效果,关键的两个方法就是time.sleep()与processEvents(),具体看如下代码:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import *
import time

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(390, 500)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setObjectName("textEdit")
        self.gridLayout.addWidget(self.textEdit, 1, 1, 1, 1)
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(3)
        self.tableWidget.setRowCount(4)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现通过按钮控制OpenCV在label上拍照,并将照片显示在另一个label上,可以使用下面的代码: ```python import cv2 from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton from PyQt5.QtCore import QTimer class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建两个 QLabel 用于显示图像 self.label_camera = QLabel() self.label_photo = QLabel() # 创建一个 QPushButton 用于拍照 self.button_capture = QPushButton("Capture") # 将 QPushButton 绑定一个槽函数 self.button_capture.clicked.connect(self.capture) # 创建一个 QTimer 用于定时刷新摄像头 self.timer = QTimer(self) self.timer.timeout.connect(self.update_frame) self.timer.start(30) # 设置 MainWindow 的布局 central_widget = QWidget() self.setCentralWidget(central_widget) layout = QHBoxLayout(central_widget) layout.addWidget(self.label_camera) layout.addWidget(self.label_photo) layout.addWidget(self.button_capture) # 打开摄像头 self.capture = cv2.VideoCapture(0) self.capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640) self.capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) def update_frame(self): # 从摄像头中读取一帧图像 ret, frame = self.capture.read() # 将 OpenCV 的图像转换成 QImage 格式 q_image = QImage(frame.data, frame.shape[1], frame.shape[0], QImage.Format_RGB888).rgbSwapped() # 将 QImage 转换成 QPixmap 格式 pixmap = QPixmap.fromImage(q_image) # 将 QPixmap 显示在 QLabel 上 self.label_camera.setPixmap(pixmap) def capture(self): # 从摄像头中读取一帧图像 ret, frame = self.capture.read() # 将 OpenCV 的图像转换成 QImage 格式 q_image = QImage(frame.data, frame.shape[1], frame.shape[0], QImage.Format_RGB888).rgbSwapped() # 将 QImage 转换成 QPixmap 格式 pixmap = QPixmap.fromImage(q_image) # 将 QPixmap 显示在 QLabel 上 self.label_photo.setPixmap(pixmap) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 在这个例子中,我们创建了一个窗口,其中包含两个 QLabel 和一个 QPushButton。当我们单击 QPushButton 时,它会调用 `capture` 方法,该方法将从摄像头中读取一帧图像,并将其显示在第二个 QLabel 上。同时,摄像头读取的图像也会定时刷新,并在第一个 QLabel 上显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值