1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QComboBox, QPushButton, QMessageBox
- from widgets import PStackedWidget
- from module.cam import IPCam, USBCam
- from module.cam.USBCam import get_list_name_cam
- from logger import logger
- class PCamChecked(QWidget):
- def __init__(self, parent=None, mode: str = 'video') -> None:
- super().__init__(parent)
- self.__mode = mode
- self.__wwc = None
-
- self.vLayout = QVBoxLayout(self)
- self.vLayout.setObjectName(u'vLayout')
- if self.__mode in 'snapshot':
- self.line_cam = QLineEdit(self)
- else:
- self.line_cam = QComboBox(self)
- # load list cam
- [self.line_cam.addItem(x) for x in get_list_name_cam()]
-
- self.line_cam.setObjectName(u"line_cam")
- self.vLayout.addWidget(self.line_cam)
- self.pStackedWidget = PStackedWidget(self, mode=mode)
- self.pStackedWidget.setObjectName(u'pStackedWidget')
- self.vLayout.addWidget(self.pStackedWidget)
- self.hLayout = QHBoxLayout()
- self.hLayout.setObjectName(u'hLayout')
- self.btn_check = QPushButton(self)
- self.btn_check.setObjectName('btn_check')
- self.btn_check.setText('Проверить')
- self.btn_check.clicked.connect(self.__start_cam)
- self.hLayout.addWidget(self.btn_check)
- self.btn_stop = QPushButton(self)
- self.btn_stop.setObjectName('btn_stop')
- self.btn_stop.setText('Остановить')
- self.btn_stop.clicked.connect(self.stop_cam)
- self.hLayout.addWidget(self.btn_stop)
- self.vLayout.addLayout(self.hLayout)
- def get_value(self) -> str:
- match self.__mode:
- case 'video':
- return self.line_cam.currentText()
- case 'snapshot':
- return self.line_cam.text()
- case _: return None
- def __start_cam(self) -> None:
- match self.__mode:
- case 'video':
- self.pStackedWidget.to_video()
- self.__wwc = USBCam(self.pStackedWidget.video,
- self.line_cam.currentText())
- self.__wwc.start_cam()
- logger.info("Start USB cam")
- case 'snapshot':
- self.pStackedWidget.to_video()
- self.__wwc = IPCam()
- self.__wwc.qLabel = self.pStackedWidget.video
- self.__wwc.lnk_connect = self.line_cam.text()
- self.__wwc.start()
- logger.info("Start IP cam")
-
- case _: return None
- def stop_cam(self):
- logger.info("Stop cam")
- self.__wwc.stop_cam()
- self.__wwc = None
- self.pStackedWidget.to_image()
-
|