
供以后参考,这是我如何使它工作的方法。
使用信号和插槽机制,以下应用程序可以工作。信号/插槽机制似乎弄清楚了在up_camera_callback函数内部创建并发送到CameraDisplay.updateframe函数的图像来自其他线程,并采取了必要的预防措施。
class CameraDisplay(QtGui.QLabel): def __init__(self): super(CameraDisplay, self).__init__() def updateframe(self, image): self.setPixmap(QtGui.QPixmap.fromImage(image))class ControlCenter(QtGui.QWidget): up_camera_signal = QtCore.Signal(QtGui.QImage) up_camera = None def __init__(self): super(ControlCenter, self).__init__() self.up_camera = CameraDisplay() self.up_camera_signal.connect(self.up_camera.updateframe) grid = QtGui.QGridLayout() grid.setSpacing(10) grid.addWidget(self.up_camera, 0, 0) self.setLayout(grid) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Control Center') self.show() def up_camera_callback(self, data): '''This function gets called by an external thread''' try: image = QtGui.QImage(data.data, data.width, data.height, QtGui.QImage.Format_RGB888) self.up_camera_signal.emit(image) except Exception, e: print(e)if __name__ == "__main__": app = QtGui.QApplication(sys.argv) ex = ControlCenter() sys.exit(app.exec_())欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)