Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5窗口在运行几秒钟后自动关闭-“;流程结束,退出代码为1073741819(0xC0000005)";_Python_Oop_Pyqt_Pyqt5 - Fatal编程技术网

Python PyQt5窗口在运行几秒钟后自动关闭-“;流程结束,退出代码为1073741819(0xC0000005)";

Python PyQt5窗口在运行几秒钟后自动关闭-“;流程结束,退出代码为1073741819(0xC0000005)";,python,oop,pyqt,pyqt5,Python,Oop,Pyqt,Pyqt5,我正在尝试用PyQt5制作一个桌面应用程序,它利用网络摄像头。我看了一段YouTube视频,视频中那个家伙用线程实现了这一点。我为我的用例修改了代码。修改后的代码如下:- import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import cv2 class MainWindow(QWidget): def __init__(self):

我正在尝试用PyQt5制作一个桌面应用程序,它利用网络摄像头。我看了一段YouTube视频,视频中那个家伙用线程实现了这一点。我为我的用例修改了代码。修改后的代码如下:-

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import cv2


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Ayyo")

        self.GL = QGridLayout()

        self.feedLabel = QLabel()
        self.GL.addWidget(self.feedLabel, 0, 0, 1, 2)

        self.lineEdit = QLineEdit()
        self.GL.addWidget(self.lineEdit, 1, 0, 1, 1)

        self.button1 = QPushButton("Confirm")
        self.button1.clicked.connect(self.confirm)
        self.GL.addWidget(self.button1, 1, 1, 1, 1)

        self.textEdit = QTextEdit()
        self.GL.addWidget(self.textEdit, 2, 0, 2, 1)

        self.button2 = QPushButton("Clear")
        self.button2.clicked.connect(self.clear)
        self.GL.addWidget(self.button2, 2, 1, 1, 1)

        self.button3 = QPushButton("Copy")
        self.GL.addWidget(self.button3, 3, 1, 1, 1)

        self.webcam = Webcam()
        self.webcam.start()
        self.webcam.ImageUpdate.connect(self.ImageUpdateSlot)

        self.setLayout(self.GL)

        self.show()

    def ImageUpdateSlot(self, image):
        self.feedLabel.setPixmap(QPixmap.fromImage(image))

    def confirm(self):
        current = self.textEdit.toPlainText()
        self.textEdit.setPlainText(current + self.lineEdit.text())

    def clear(self):
        self.textEdit.setPlainText("")


class Webcam(QThread):
    ImageUpdate = pyqtSignal(QImage)
    
    def run(self):
        self.ThreadActive = True
        vid = cv2.VideoCapture(0)

        while True:
            ret, frame = vid.read()
            frame1 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            image = QImage(frame1, frame1.shape[1], frame1.shape[0], frame1.strides[0], QImage.Format_RGB888)
            self.ImageUpdate.emit(image)


app = QApplication(sys.argv)
mw = MainWindow()
# mw.show()
sys.exit(app.exec_())
当我运行这个程序时,实际的程序运行得很好,但几秒钟后,它会自动关闭

流程结束,退出代码为1073741819(0xC0000005)

大宗报价


奇怪的是,在PyCharm中调试代码时,它没有关闭。但每当我运行代码时,它都会在几秒钟后自动关闭。任何帮助都将不胜感激。

这些问题总是很难解决,但我发现在初始化应用程序时应避免使用QThreads,因为它有时会导致随机关闭

尝试:

  • 初始化应用程序并显示它
  • 运行webcam类(尽管我建议您将其替换为函数)

如果您想使此功能线程化,从而不锁定UI,请查看PyQt5()的QThreadPool()

您是否尝试过从终端运行代码?如果是这样,它是否会向您显示错误消息?您能否详细说明如何将其更改为函数?在我的链接中实现QThreadPool类后,您可以将函数作为线程调用。worker=worker(self.camera_函数),然后使用self.threadpool.start(worker)运行它。您还可以连接任何用于返回值或完成线程的信号-worker.signals.result.connect(self.function\u to\u send\u result)