Beispiel #1
0
class SlideShow(QObject):
    current_index_changed = Signal(int)
    clicked = Signal()
    key_pressed = Signal(QEvent)

    def __init__(self, parent, base_widget, is_animated=True):
        QObject.__init__(self, parent)
        self._base_widget = base_widget  # has to be stacked widget
        self._is_animated = is_animated
        self._slides_count = self._base_widget.count()

        self._scroll_area = QScrollArea(parent)
        self._scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self._scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self._scroll_area.setFrameShape(QFrame.NoFrame)
        self._scroll_area.mouseReleaseEvent = self._on_mouse_release_event
        self._scroll_area.keyPressEvent = self._on_key_pressed

        self._slide_width = None
        self._current_index = 0
        self._is_moving = False
        self._orig_resize_event = self._base_widget.resizeEvent
        self._base_widget.resizeEvent = self._resizeEvent

        self._animation_time = 300
        self._animation_steps = 50

    def _construct_ribbon(self):
        self._ribbon = QWidget()

        self._layout = QHBoxLayout()
        self._ribbon.setLayout(self._layout)

        x = 0
        for i in range(self._slides_count):
            self._base_widget.setCurrentIndex(i)
            widget = self._base_widget.currentWidget()
            if widget:
                new_widget = self._grab(widget)
                self._layout.addWidget(new_widget)
                x += self._slide_width

    def _grab(self, widget):
        new_widget = QLabel()
        pixmap = widget.grab()
        new_widget.setPixmap(pixmap)
        return new_widget

    def _resizeEvent(self, *args, **kwargs):
        self._orig_resize_event(*args, **kwargs)
        if not self._slide_width:
            self._scroll_area.setGeometry(self._base_widget.geometry())
            self._slide_width = self._base_widget.widget(0).width()
            QTimer.singleShot(50, self._show)

    def _show(self):
        self._construct_ribbon()
        self._scroll_area.setWidget(self._ribbon)
        self._scroll_area.setAlignment(Qt.AlignCenter)
        self._scroll_area.show()
        self._scroll_area.setFocus()

    def _on_mouse_release_event(self, ev):
        self.clicked.emit()

    def _on_key_pressed(self, ev):
        self.key_pressed.emit(ev)

    def setAnimated(self,
                    is_animated,
                    animation_time=None,
                    animation_steps=None):
        self._is_animated = is_animated
        if animation_time:
            self._animation_time = animation_time
        if animation_steps:
            self._animation_steps = animation_steps

    def is_moving(self):
        return self._is_moving

    def setCurrentIndex(self, new_index):
        new_index = max(new_index, 0)
        new_index = min(new_index, self._slides_count - 1)

        if new_index == self._current_index or self._is_moving:
            return

        is_animated = self._is_animated and \
                      abs(self._current_index - new_index) == 1
        self._move(new_index, is_animated)

    def _move(self, new_index, is_animated):
        self._is_moving = True
        source_x = self._current_index * self._slide_width
        target_x = new_index * self._slide_width

        if not is_animated:
            dx = target_x - source_x
            self._ribbon.scroll(-dx, 0)
            self._finish_moving(new_index)
        else:
            animation_interval = self._animation_time // self._animation_steps
            dx = (target_x - source_x) // self._animation_steps
            self._move_animated(source_x, target_x, dx, animation_interval,
                                new_index)

    def _move_animated(self, source_x, target_x, dx, animation_interval,
                       new_index):
        if target_x == source_x:
            self._finish_moving(new_index)
            return

        if target_x > source_x:
            dx = min(dx, target_x - source_x)
        else:
            dx = -min(-dx, source_x - target_x)
        self._ribbon.scroll(-dx, 0)
        source_x += dx
        QTimer.singleShot(
            animation_interval, lambda: self._move_animated(
                source_x, target_x, dx, animation_interval, new_index))

    def _finish_moving(self, new_index):
        self._current_index = new_index
        self.current_index_changed.emit(self._current_index)
        self._is_moving = False

    def widget(self):
        return self._scroll_area
Beispiel #2
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1121, 770)

        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.scrollArea = QScrollArea(MainWindow)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollArea.setGeometry(QRect(10, 10, 1101, 531))
        self.scrollArea.setWidgetResizable(True)
        self.scrollAreaWidgetContents = QWidget()
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 1099, 529))
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)

        self.tableWidget = QTableWidget(self.scrollAreaWidgetContents)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setGeometry(QRect(0, 0, 1099, 529))
        self.tableWidget.setAutoFillBackground(True)
        self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
        self.tableWidget.setColumnCount(24) 
        self.column_label = ['begin', 'end', 'time interval', 'login', 'mac ab', 'ULSK1', 'BRAS ip', 'start count', 'alive count',
                            'stop count', 'incoming', 'outcoming', 'error_count', 'code 0', 'code 1011', 'code 1100', 'code -3',
                            'code -52', 'code -42', 'code -21', 'code -40', ' code -44', 'code -46', ' code -38']
        self.tableWidget.setHorizontalHeaderLabels(self.column_label)
        
        self.PathFile = QLineEdit(self.centralwidget)
        self.PathFile.setGeometry(QRect(200, 10, 831, 90))
        self.PathFile.setObjectName("PathFile")

        self.progressBar_2 = QProgressBar(MainWindow)
        self.progressBar_2.setObjectName("progressBar_2")
        self.progressBar_2.setGeometry(QRect(400, 590, 651, 23))
        self.progressBar_2.setProperty("value", 0)

        self.progressBar = QProgressBar(MainWindow)
        self.progressBar.setObjectName("progressBar")
        self.progressBar.setGeometry(QRect(400, 650, 651, 23))
        self.progressBar.setProperty("value", 0)

        self.comboBox = QComboBox(MainWindow)
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.setGeometry(QRect(20, 690, 161, 28))
        self.comboBox.setEditable(False)
        self.comboBox.setDuplicatesEnabled(False)

        self.dateTimeEdit = QDateTimeEdit(MainWindow)
        self.dateTimeEdit.setObjectName("dateTimeEdit")
        self.dateTimeEdit.setGeometry(QRect(190, 690, 151, 28))
        self.dateTimeEdit.setCurrentSection(QDateTimeEdit.DaySection)
        

        self.saveButt = QPushButton(self.centralwidget)
        self.saveButt.setGeometry(QRect(20, 610, 321, 28))
        self.saveButt.setObjectName("saveButt")

        self.AnalizButt = QPushButton(self.centralwidget)
        self.AnalizButt.setGeometry(QRect(20, 570, 321, 28))
        self.AnalizButt.setObjectName("AnalizButt")
        
        self.OpenButt = QPushButton(self.centralwidget)
        self.OpenButt.setGeometry(QRect(400, 710, 615, 40))
        self.OpenButt.setObjectName("OpenButt")

        self.change_cbButt = QPushButton(self.centralwidget)
        self.change_cbButt.setObjectName("change_cbButt")
        self.change_cbButt.setGeometry(QRect(20, 730, 321, 28))

        self.change_sizeButt = QPushButton(self.centralwidget)
        self.change_sizeButt.setObjectName(u"change_sizeButt")
        self.change_sizeButt.setGeometry(QRect(20, 650, 161, 28))

        self.change_sizeLine = QLineEdit(self.centralwidget)
        self.change_sizeLine.setObjectName("change_sizeLine")
        self.change_sizeLine.setGeometry(QRect(190, 650, 151, 28))

        self.OpenButt.raise_()
        self.AnalizButt.raise_()
        self.change_cbButt.raise_()
        self.progressBar.raise_()
        self.PathFile.raise_()
        self.tableWidget.raise_()
        self.saveButt.raise_()
        self.comboBox.raise_()
        self.dateTimeEdit.raise_()
        self.change_sizeButt.raise_()

        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", "MainWindow", None))
#if QT_CONFIG(accessibility)
        self.tableWidget.setAccessibleName("")
#endif // QT_CONFIG(accessibility)
        self.comboBox.setItemText(0, QCoreApplication.translate("MainWindow", "Парамметры выборки", None))
        self.comboBox.setItemText(1, QCoreApplication.translate("MainWindow", "Выборка по логину", None))
        self.comboBox.setItemText(2, QCoreApplication.translate("MainWindow", "Выборка по дате", None))
        self.comboBox.setCurrentText(QCoreApplication.translate("MainWindow", "\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", None))
        self.comboBox.setPlaceholderText("")
        self.dateTimeEdit.setDisplayFormat(QCoreApplication.translate("MainWindow", "dd.MM.yyyy H:mm:ss"))
        self.saveButt.setText(QCoreApplication.translate("MainWindow", "Сохранить данные", None))
        self.OpenButt.setText(QCoreApplication.translate("MainWindow", "Выбрать папку", None))
        self.change_cbButt.setText(QCoreApplication.translate("MainWindow", "Изменить парамметры", None))
        self.AnalizButt.setText(QCoreApplication.translate("MainWindow", "Анализировать", None))
        self.change_sizeLine.setPlaceholderText(QCoreApplication.translate("MainWindow", "1-1000", None))
        self.change_sizeButt.setText(QCoreApplication.translate("MainWindow", u"Изменить выборку", None))
Beispiel #3
0
class MainApp(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.initial_x = 100
        self.initial_y = 100
        self.video_size = QSize(640, 480)

        self.scale = 1.0
        self.pause = False

        self.setup_ui()
        self.setup_camera()

    def setup_ui(self):
        """Initialize widgets.
        """
        # self.setStyleSheet('background-color: rgb(50, 50, 50);')

        self.image_label = QLabel()
        self.image_label.setGeometry(self.initial_x, self.initial_y,
                                     self.initial_x + self.video_size.width(),
                                     self.initial_y + self.video_size.height())
        self.image_label.setMinimumSize(640, 480)

        self.scrolling_image_label = QScrollArea()
        self.scrolling_image_label.setBackgroundRole(QPalette.Dark)
        self.scrolling_image_label.setWidget(self.image_label)
        self.img = cv2.imread('test_imgs/4.jpg')

        _, self.save_video_button, _, self.quit_and_save_layout = ui.create_save_and_quit(
            self.capture_photo, self.capture_video, self.close)

        self.photo = PhotoViewer(self)
        self.photo.setMinimumSize(640, 480)

        self.contrast_slider, self.contrast_layout = ui.create_slider(
            'contrast', 33, 99, self.change_contrast)
        self.brightness_slider, self.brightness_layout = ui.create_slider(
            'brightness', 1, 100, self.change_brightness)
        self.trace_slider, self.trace_layout = ui.create_slider(
            'trace', 20, 300, self.change_trace_threshold)

        self.sharpen_button, self.enhance_button, self.trace_button, self.pause_button, self.toggle_layout = ui.create_toggle(
            self.change_sharpen, self.change_enhance, self.change_trace,
            self.pause_stream)

        self.main_layout = QVBoxLayout()
        self.main_layout.addWidget(self.photo)
        self.main_layout.addLayout(self.quit_and_save_layout)
        self.main_layout.addLayout(self.contrast_layout)
        self.main_layout.addLayout(self.brightness_layout)
        self.main_layout.addLayout(self.trace_layout)
        self.main_layout.addLayout(self.toggle_layout)

        self.setLayout(self.main_layout)

    def setup_camera(self):
        """Initialize camera.
        """
        self.capture = cv2.VideoCapture(0)
        self.capture.set(cv2.CAP_PROP_FRAME_WIDTH, self.video_size.width())
        self.capture.set(cv2.CAP_PROP_FRAME_HEIGHT, self.video_size.height())

        self.contrast = 1.0
        self.brightness = 1.0
        self.trace_threshold = 20.0
        self.sharpen = False
        self.enhance = False
        self.trace = False

        self.timer = QTimer()
        self.timer.timeout.connect(self.display_video_stream)
        self.timer.start(30)
        # self.timer.timeout.connect(self.display_image_stream)
        # self.timer.start(1000)

    def display_image_stream(self):
        # self.beta = (self.beta + 10) % 100
        self.frame = p.process_contrast_frame(self.img,
                                              self.contrast,
                                              self.brightness,
                                              enhance=self.enhance,
                                              sharpen=self.sharpen,
                                              trace=self.trace)

        image = QImage(
            self.frame,
            self.frame.shape[1],
            self.frame.shape[0],
            # self.frame.strides[0], self.QImage.Format_RGB888)
            self.frame.strides[0],
            QImage.Format_Grayscale8)
        pixmap = QPixmap.fromImage(image).scaledToWidth(
            self.video_size.width())
        self.scrolling_image_label.setGeometry(
            self.initial_x, self.initial_y,
            self.initial_x + self.video_size.width(),
            self.initial_y + self.video_size.height())
        self.scrolling_image_label.setPixmap(pixmap)
        self.photo.setPhoto(pixmap)

    def display_video_stream(self):
        """Read frame from camera and repaint QLabel widget.
        """
        if not self.pause:
            _, self.raw_img = self.capture.read()

        self.frame = p.process_contrast_frame(self.raw_img,
                                              self.contrast,
                                              self.brightness,
                                              self.trace_threshold,
                                              enhance=self.enhance,
                                              sharpen=self.sharpen,
                                              trace=self.trace)
        if self.save_video_button.is_recording:
            self.save_video_button.write_img(self.frame)

        image = QImage(
            self.frame,
            self.frame.shape[1],
            self.frame.shape[0],
            # self.frame.strides[0], self.QImage.Format_RGB888)
            self.frame.strides[0],
            QImage.Format_Grayscale8)
        pixmap = QPixmap.fromImage(image).scaledToWidth(
            self.video_size.width())
        # self.image_label.setGeometry(self.initial_x, self.initial_y, self.initial_x + self.video_size.width(), self.initial_y + self.video_size.height())
        # self.image_label.setPixmap(pixmap)
        # self.photo._photo.setPixmap(pixmap)
        self.photo.setPhotoContinuous(pixmap)

    def resizeEvent(self, event):
        # Resize the video_size based on the current window size
        # Don't set the size here directly, though
        self.video_size = QSize(self.frameGeometry().width() - 40,
                                self.frameGeometry().height() - 96)

    def capture_photo(self):
        im = Image.fromarray(self.frame)
        fname = QFileDialog.getSaveFileName(self, 'Save File As',
                                            "Captures/untitled.png",
                                            "Images (*.png *.jpg)")
        im.save(fname[0])

    def capture_video(self):
        pass  # empty function

    def pause_stream(self):
        self.pause = not self.pause

    def change_contrast(self):
        self.contrast = self.contrast_slider.value()
        self.contrast = self.contrast / 33.0  # keep range in 1.0-3.0

    def change_brightness(self):
        self.brightness = self.brightness_slider.value()

    def change_trace_threshold(self):
        self.trace_threshold = self.trace_slider.value()

    def change_sharpen(self):
        self.sharpen = not self.sharpen

    def change_enhance(self):
        self.enhance = not self.enhance

    def change_trace(self):
        self.trace = not self.trace
Beispiel #4
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1050, 700)

        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.scrollArea = QScrollArea(MainWindow)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollArea.setGeometry(QRect(10, 10, 1030, 530))
        self.scrollArea.setWidgetResizable(True)
        self.scrollAreaWidgetContents = QWidget()
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 1030, 530))
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)

        self.tableWidget = QTableWidget(self.scrollAreaWidgetContents)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setGeometry(QRect(0, 0, 1030, 530))
        self.tableWidget.setAutoFillBackground(True)
        self.tableWidget.horizontalHeader().setCascadingSectionResizes(True)
        self.tableWidget.setColumnCount(7)
        self.column_label = ['№', 'name', 'fname', 'phone', 'uid', 'nik', 'wo']
        self.tableWidget.setHorizontalHeaderLabels(self.column_label)

        self.PathFile = QLineEdit(self.centralwidget)
        self.PathFile.setGeometry(QRect(200, 10, 831, 90))
        self.PathFile.setObjectName("PathFile")

        self.progressBar = QProgressBar(MainWindow)
        self.progressBar.setObjectName("progressBar")
        self.progressBar.setGeometry(QRect(400, 650, 640, 28))
        self.progressBar.setProperty("value", 0)

        self.comboBox = QComboBox(MainWindow)
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.setGeometry(QRect(20, 610, 321, 28))
        self.comboBox.setEditable(False)
        self.comboBox.setDuplicatesEnabled(False)

        self.comboBox_2 = QComboBox(self.centralwidget)
        self.comboBox_2.setGeometry(QRect(20, 570, 321, 28))
        self.comboBox_2.setObjectName("comboBox2")
        self.comboBox_2.addItem("")

        self.saveButt = QPushButton(self.centralwidget)
        self.saveButt.setGeometry(QRect(560, 610, 160, 28))
        self.saveButt.setObjectName("saveButt")

        self.AnalizButt = QPushButton(self.centralwidget)
        self.AnalizButt.setGeometry(QRect(400, 610, 160, 28))
        self.AnalizButt.setObjectName("AnalizButt")

        self.UpdateButt = QPushButton(self.centralwidget)
        self.UpdateButt.setGeometry(QRect(720, 610, 160, 28))
        self.UpdateButt.setObjectName("updateButt")

        self.DeleteButt = QPushButton(self.centralwidget)
        self.DeleteButt.setGeometry(QRect(880, 610, 160, 28))
        self.DeleteButt.setObjectName("DeleteButt")

        self.OpenBox = QComboBox(MainWindow)
        self.OpenBox.addItem("")
        self.OpenBox.addItem("")
        self.OpenBox.addItem("")
        self.OpenBox.setObjectName("OpenBox")
        self.OpenBox.setGeometry(QRect(400, 570, 160, 30))
        self.OpenBox.setEditable(False)
        self.OpenBox.setDuplicatesEnabled(False)

        self.change_cbButt = QPushButton(self.centralwidget)
        self.change_cbButt.setObjectName("change_cbButt")
        self.change_cbButt.setGeometry(QRect(20, 650, 321, 28))

        self.OpenBox.raise_()
        self.UpdateButt.raise_()
        self.AnalizButt.raise_()
        self.DeleteButt.raise_()
        self.change_cbButt.raise_()
        self.progressBar.raise_()
        self.PathFile.raise_()
        self.tableWidget.raise_()
        self.saveButt.raise_()
        self.comboBox.raise_()
        self.comboBox_2.raise_()

        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)

    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(
            QCoreApplication.translate("MainWindow", "MainWindow", None))
        #if QT_CONFIG(accessibility)
        self.tableWidget.setAccessibleName("")
        #endif // QT_CONFIG(accessibility)
        self.comboBox.setItemText(
            0, QCoreApplication.translate("MainWindow", "Поиск по ...", None))
        self.comboBox.setItemText(
            1,
            QCoreApplication.translate("MainWindow", "Поиск по никнейму",
                                       None))
        self.comboBox.setItemText(
            2,
            QCoreApplication.translate("MainWindow",
                                       "Поиск по номеру телефона", None))
        self.comboBox.setItemText(
            3,
            QCoreApplication.translate("MainWindow", "Поиск по фамилии", None))
        self.comboBox.setCurrentText(
            QCoreApplication.translate(
                "MainWindow",
                "\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
                None))
        self.comboBox.setPlaceholderText("")
        self.saveButt.setText(
            QCoreApplication.translate("MainWindow", "Сохранить данные", None))
        self.OpenBox.setItemText(
            0,
            QCoreApplication.translate("MainWindow", "Загрузить данные", None))
        self.OpenBox.setItemText(
            1, QCoreApplication.translate("MainWindow", "Выбрать папку", None))
        self.OpenBox.setItemText(
            2, QCoreApplication.translate("MainWindow", "Ввести данные", None))
        self.change_cbButt.setText(
            QCoreApplication.translate("MainWindow", "Изменить парамметры",
                                       None))
        self.DeleteButt.setText(
            QCoreApplication.translate("MainWindow", "Удалить данные", None))
        self.UpdateButt.setText(
            QCoreApplication.translate("MainWindow", "Обновить данные", None))
        self.AnalizButt.setText(
            QCoreApplication.translate("MainWindow", "Анализировать", None))
        self.comboBox_2.setItemText(
            0, QCoreApplication.translate("MainWindow", "1 - 100", None))