Beispiel #1
0
y2 = [3, 4]

for i in range(len(x)):
    upperSeries.append(x[i], y1[i])
    lowerSeries.append(x[i], y2[i])

series = QtCharts.QAreaSeries(upperSeries, lowerSeries)

pen = QPen(Qt.red)
pen.setWidth(3)
series.setPen(pen)

gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
gradient.setColorAt(0.0, QColor(255, 255, 255))
gradient.setColorAt(1.0, QColor(0, 255, 0))
gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
series.setBrush(gradient)

chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
chart.legend().hide()
chart.createDefaultAxes()
chart.axes(Qt.Horizontal)[0].setRange(0, 3)
chart.axes(Qt.Vertical)[0].setRange(0, 10)

chartView = QtCharts.QChartView(chart)
chartView.setWindowTitle('Area Chart')
chartView.resize(800, 600)
chartView.show()
Beispiel #2
0
class ColorTransferFunctionIntervalView(QGraphicsRectItem):
    def __init__(self,
                 viewer: ColorTransferFunctionViewer,
                 begin_point: ColorTransferFunctionPoint,
                 end_point: ColorTransferFunctionPoint,
                 parent: QGraphicsItem = None):
        super().__init__(parent)

        self.viewer = viewer
        self._begin_point = None
        self._end_point = None
        self.chart = self.viewer.chart

        self.brush_gradient = QLinearGradient()
        self.brush_gradient.setStart(QPointF(0, 0))
        self.brush_gradient.setFinalStop(QPointF(1, 0))
        self.brush_gradient.setCoordinateMode(QGradient.ObjectMode)

        self.setPen(QColor('#404040'))

        self.begin_point = begin_point
        self.end_point = end_point

    @property
    def begin_point(self):
        return self._begin_point

    @begin_point.setter
    def begin_point(self, value):
        if self._begin_point != value:
            self._begin_point = value
            self._begin_point.x_changed.connect(self._on_point_x_changed)
            self._begin_point.color_array_changed.connect(
                self._on_begin_point_color_array_changed)
            self._update_begin_brush()

    @property
    def end_point(self):
        return self._end_point

    @end_point.setter
    def end_point(self, value):
        if self._end_point != value:
            self._end_point = value
            self._end_point.x_changed.connect(self._on_point_x_changed)
            self._end_point.color_array_changed.connect(
                self._on_end_point_color_array_changed)
            self._update_end_brush()

    def _on_point_x_changed(self, x: float):
        self.update()

    def _on_begin_point_color_array_changed(self, color_array: np.ndarray):
        self._update_begin_brush()

    def _on_end_point_color_array_changed(self, color_array: np.ndarray):
        self._update_end_brush()

    def _update_begin_brush(self):
        self.brush_gradient.setColorAt(0, self.begin_point.color)
        self.setBrush(self.brush_gradient)

    def _update_end_brush(self):
        self.brush_gradient.setColorAt(1, self.end_point.color)
        self.setBrush(self.brush_gradient)

    def update(self, rect: QRectF = QRectF()):
        super().update(rect)

        top_left_interval_pos = self.chart.mapToPosition(
            QPointF(self.begin_point.x, 1))
        bottom_right_interval_pos = self.chart.mapToPosition(
            QPointF(self.end_point.x, 0))
        self.setRect(QRectF(top_left_interval_pos, bottom_right_interval_pos))

    def __lt__(self, other):
        return self.begin_point.x < other.begin_point.x
def createAreaChart(data):
    """
    axisX = QtCharts.QDateTimeAxis();
    # axisX.setTickCount(10);
    
    axisX.setFormat("yyyy");
    #axisX.setFormat("yyyy/MM/dd hh:mm:ss:zzz");
    #axisX.setFormat("hh:mm:ss:zzz");
    
    axisX.setTitleText("Time");
    chart.addAxis(axisX, Qt.AlignBottom);

    axisY = QtCharts.QValueAxis();
    # axisY.setLabelFormat("%.2f");
    axisY.setTitleText("%");
    chart.addAxis(axisY, Qt.AlignLeft);

    # chart.axes(Qt.Vertical)[0].setRange(0, 100)
    # chart.axes(Qt.Vertical)[0].setRange(0, 3)
    """

    series0 = QtCharts.QSplineSeries()

    series0.append(QPointF(1, 5))
    series0.append(QPointF(3, 7))
    series0.append(QPointF(7, 6))
    series0.append(QPointF(9, 7))
    series0.append(QPointF(12, 6))
    series0.append(QPointF(16, 7))
    series0.append(QPointF(18, 5))

    series1 = QtCharts.QSplineSeries()

    series1.append(QPointF(1, 3))
    series1.append(QPointF(3, 4))
    series1.append(QPointF(7, 3))
    series1.append(QPointF(8, 2))
    series1.append(QPointF(12, 3))
    series1.append(QPointF(16, 4))
    series1.append(QPointF(18, 3))
    """    

    # seriesFilter = [0, 3, 4, 6]
    # seriesFilter = [0]
    seriesFilter = [0]

    valuesToDraw = [data[1][i] for i in seriesFilter]
    namesToDraw = [data[2][i] for i in seriesFilter]
  

    i = 0

    values = valuesToDraw[i]
    name = namesToDraw[i]

    topLineSeries = QtCharts.QLineSeries()    

    n = len(values)

    print(values)

     # конвертируем столбец time в float, чтобы можно было использовать его как значения оси x
    for j in range(n):
        # print(x)
        time = data[0][j]                
        topLineSeries.append(float(time.toMSecsSinceEpoch()), values[j])

    """

    #areaSeries = QtCharts.QAreaSeries(topLineSeries);
    areaSeries = QtCharts.QAreaSeries(series0, series1)
    #areaSeries.setName(name);
    areaSeries.setName("name4535343534")

    pen = QPen(0x059605)
    pen.setWidth(3)
    areaSeries.setPen(pen)

    gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
    gradient.setColorAt(0.0, 0x3cc63c)
    gradient.setColorAt(1.0, 0x26f626)
    gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
    areaSeries.setBrush(gradient)

    chart = QtCharts.QChart()
    chart.addSeries(areaSeries)
    # chart.legend().hide()
    chart.setTitle("Area chart (population by continents)")
    chart.createDefaultAxes()
    chart.axes(Qt.Horizontal)[0].setRange(0, 20)
    chart.axes(Qt.Vertical)[0].setRange(0, 10)

    chartView = QtCharts.QChartView(chart)
    chartView.setRenderHint(QPainter.Antialiasing)

    # areaSeries.attachAxis(axisX);
    # areaSeries.attachAxis(axisY);
    """
    for i in range(len(seriesFilter)):

        values = valuesToDraw[i]
        name = namesToDraw[i]
    
        series = QtCharts.QSplineSeries()
        series.setName(name)

        n = len(values)

        # print(values)

         # конвертируем столбец time в float, чтобы можно было использовать его как значения оси x
        for j in range(n):
            # print(x)
            time = data[0][j]                
            series.append(float(time.toMSecsSinceEpoch()), values[j])

        chart.addSeries(series)

        series.attachAxis(axisX);        
        series.attachAxis(axisY);
    
    
    
    """

    return chartView
    def setupUi(self, DsManager):
        if not DsManager.objectName():
            DsManager.setObjectName(u"DsManager")
        DsManager.setWindowModality(Qt.WindowModal)
        DsManager.resize(1156, 934)
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            DsManager.sizePolicy().hasHeightForWidth())
        DsManager.setSizePolicy(sizePolicy)
        DsManager.setMinimumSize(QSize(0, 800))
        font = QFont()
        font.setFamily(u"Arial Narrow")
        font.setPointSize(11)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        DsManager.setFont(font)
        icon = QIcon()
        icon.addFile(u"inc/icon.ico", QSize(), QIcon.Normal, QIcon.Off)
        DsManager.setWindowIcon(icon)
        DsManager.setStyleSheet(
            u"QMainWindow{\n"
            "background-image:url(:/images/background.jpg);\n"
            "background-repeat:none;\n"
            "}\n"
            "QPushButton {\n"
            "	border: 2px solid rgb(52, 59, 72);\n"
            "	border-radius: 5px;	\n"
            "	background-color: rgb(199, 200, 255);\n"
            "	padding: 5px\n"
            "}\n"
            "QPushButton:hover {\n"
            "	border: 2px solid rgb(61, 70, 86);\n"
            "}\n"
            "QPushButton:pressed {	\n"
            "	background-color: rgb(35, 40, 49);\n"
            "	border: 2px solid rgb(43, 50, 61);\n"
            "}")
        DsManager.setToolButtonStyle(Qt.ToolButtonIconOnly)
        DsManager.setAnimated(True)
        DsManager.setDocumentMode(False)
        DsManager.setDockNestingEnabled(True)
        self.actionAbut_DS_Manager = QAction(DsManager)
        self.actionAbut_DS_Manager.setObjectName(u"actionAbut_DS_Manager")
        icon1 = QIcon()
        icon1.addFile(u":/icons/icon.png", QSize(), QIcon.Normal, QIcon.Off)
        self.actionAbut_DS_Manager.setIcon(icon1)
        self.actionAbut_DS_Manager.setShortcutContext(Qt.WidgetShortcut)
        self.actionAbut_DS_Manager.setMenuRole(QAction.TextHeuristicRole)
        self.actionBackup_Database = QAction(DsManager)
        self.actionBackup_Database.setObjectName(u"actionBackup_Database")
        font1 = QFont()
        font1.setFamily(u"Microsoft YaHei UI")
        font1.setPointSize(8)
        self.actionBackup_Database.setFont(font1)
        self.actionRestore_Database = QAction(DsManager)
        self.actionRestore_Database.setObjectName(u"actionRestore_Database")
        self.centralwidget = QWidget(DsManager)
        self.centralwidget.setObjectName(u"centralwidget")
        sizePolicy.setHeightForWidth(
            self.centralwidget.sizePolicy().hasHeightForWidth())
        self.centralwidget.setSizePolicy(sizePolicy)
        self.verticalLayout_2 = QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName(u"verticalLayout_2")
        self.horizontalLayout = QHBoxLayout()
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.horizontalSpacer_3 = QSpacerItem(250, 20, QSizePolicy.Expanding,
                                              QSizePolicy.Minimum)

        self.horizontalLayout.addItem(self.horizontalSpacer_3)

        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")
        sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        sizePolicy1.setHorizontalStretch(0)
        sizePolicy1.setVerticalStretch(0)
        sizePolicy1.setHeightForWidth(
            self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy1)
        self.label.setMaximumSize(QSize(164, 164))
        self.label.setStyleSheet(u"")
        self.label.setTextFormat(Qt.PlainText)
        self.label.setPixmap(QPixmap(u":/icons/home_logo.png"))
        self.label.setScaledContents(True)
        self.label.setAlignment(Qt.AlignLeading | Qt.AlignLeft
                                | Qt.AlignVCenter)

        self.horizontalLayout.addWidget(self.label)

        self.horizontalSpacer = QSpacerItem(150, 20, QSizePolicy.Expanding,
                                            QSizePolicy.Minimum)

        self.horizontalLayout.addItem(self.horizontalSpacer)

        self.label_11 = QLabel(self.centralwidget)
        self.label_11.setObjectName(u"label_11")
        sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        sizePolicy2.setHorizontalStretch(0)
        sizePolicy2.setVerticalStretch(0)
        sizePolicy2.setHeightForWidth(
            self.label_11.sizePolicy().hasHeightForWidth())
        self.label_11.setSizePolicy(sizePolicy2)
        font2 = QFont()
        font2.setFamily(u"Tahoma")
        font2.setPointSize(14)
        font2.setBold(True)
        font2.setItalic(False)
        font2.setWeight(75)
        font2.setStyleStrategy(QFont.PreferAntialias)
        self.label_11.setFont(font2)
        self.label_11.setLayoutDirection(Qt.RightToLeft)
        self.label_11.setStyleSheet(u"color: white;\n"
                                    "padding:10px;\n"
                                    "text-align:left;")
        self.label_11.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
        self.label_11.setWordWrap(False)
        self.label_11.setMargin(10)
        self.label_11.setOpenExternalLinks(False)

        self.horizontalLayout.addWidget(self.label_11)

        self.horizontalSpacer_2 = QSpacerItem(250, 20, QSizePolicy.Expanding,
                                              QSizePolicy.Minimum)

        self.horizontalLayout.addItem(self.horizontalSpacer_2)

        self.verticalLayout_2.addLayout(self.horizontalLayout)

        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.verticalLayout.setContentsMargins(60, 10, 30, 25)
        self.tabWidget = QTabWidget(self.centralwidget)
        self.tabWidget.setObjectName(u"tabWidget")
        self.tabWidget.setEnabled(True)
        sizePolicy.setHeightForWidth(
            self.tabWidget.sizePolicy().hasHeightForWidth())
        self.tabWidget.setSizePolicy(sizePolicy)
        self.tabWidget.setMaximumSize(QSize(1500, 16777215))
        font3 = QFont()
        font3.setFamily(u"Microsoft YaHei UI")
        font3.setPointSize(9)
        font3.setBold(True)
        font3.setItalic(False)
        font3.setWeight(75)
        self.tabWidget.setFont(font3)
        self.tabWidget.setAcceptDrops(False)
        self.tabWidget.setToolTipDuration(-1)
        # if QT_CONFIG(accessibility)
        self.tabWidget.setAccessibleDescription(u"")
        # endif // QT_CONFIG(accessibility)
        self.tabWidget.setLayoutDirection(Qt.LeftToRight)
        self.tabWidget.setAutoFillBackground(False)
        self.tabWidget.setStyleSheet(
            u"QWidget{\n"
            "	background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(173, 224, 209, 207), stop:0.965174 rgba(165, 218, 214, 170));\n"
            "	border:0px;\n"
            "	height:30%;\n"
            "}\n"
            "\n"
            "QTabWidget::pane {\n"
            "	border: 0;\n"
            "	background-color:rgb(220, 255, 247);\n"
            "	border-radius: 10px;\n"
            "}\n"
            "\n"
            "QCalendarWidget QToolButton{\n"
            "  	color: black;\n"
            "  	background-color:rgb(156, 255, 231);\n"
            "}\n"
            "\n"
            " \n"
            "\n"
            "QCalendarWidget QAbstractItemView:enabled \n"
            "  {\n"
            "  \n"
            "  	color: black;  \n"
            "  	background-color: rgb(198, 255, 232);  \n"
            "  	selection-background-color: rgb(64, 64, 64); \n"
            "  	selection-color: rgb(0, 255, 0); \n"
            "  }\n"
            "\n"
            "QTabBar::tab {\n"
            "	width: 200;\n"
            "	background: gray;\n"
            "	color: white;\n"
            "	padding: 10px; \n"
            "	border-radius: 40px;\n"
            "}\n"
            "\n"
            "QTabBar::tab:selected {\n"
            "	background: qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(173, 224, 209, 207), stop:0.965174 rgba(165, 218,"
            " 214, 170));\n"
            "	color: rgb(9, 0, 79);\n"
            "	padding: 10px; \n"
            "	border-radius: 40px;\n"
            "}")
        self.tabWidget.setTabPosition(QTabWidget.North)
        self.tabWidget.setTabShape(QTabWidget.Rounded)
        self.tabWidget.setIconSize(QSize(0, 0))
        self.tabWidget.setElideMode(Qt.ElideNone)
        self.tabWidget.setDocumentMode(False)
        self.tabWidget.setTabsClosable(False)
        self.tabWidget.setMovable(True)
        self.tabWidget.setTabBarAutoHide(False)
        self.data_entry_tab = QWidget()
        self.data_entry_tab.setObjectName(u"data_entry_tab")
        font4 = QFont()
        font4.setBold(False)
        font4.setWeight(50)
        self.data_entry_tab.setFont(font4)
        self.gridLayout = QGridLayout(self.data_entry_tab)
        self.gridLayout.setObjectName(u"gridLayout")
        self.gridLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
        self.gridLayout.setHorizontalSpacing(10)
        self.gridLayout.setVerticalSpacing(30)
        self.gridLayout.setContentsMargins(80, 40, 20, 10)
        self.label_13 = QLabel(self.data_entry_tab)
        self.label_13.setObjectName(u"label_13")
        sizePolicy2.setHeightForWidth(
            self.label_13.sizePolicy().hasHeightForWidth())
        self.label_13.setSizePolicy(sizePolicy2)
        font5 = QFont()
        font5.setFamily(u"Microsoft YaHei UI")
        font5.setPointSize(11)
        font5.setBold(False)
        font5.setWeight(50)
        font5.setStyleStrategy(QFont.PreferAntialias)
        self.label_13.setFont(font5)

        self.gridLayout.addWidget(self.label_13, 8, 1, 1, 1)

        self.label_10 = QLabel(self.data_entry_tab)
        self.label_10.setObjectName(u"label_10")
        sizePolicy2.setHeightForWidth(
            self.label_10.sizePolicy().hasHeightForWidth())
        self.label_10.setSizePolicy(sizePolicy2)
        font6 = QFont()
        font6.setFamily(u"Microsoft YaHei UI")
        font6.setPointSize(11)
        font6.setBold(False)
        font6.setItalic(False)
        font6.setWeight(50)
        font6.setStrikeOut(False)
        font6.setStyleStrategy(QFont.PreferAntialias)
        self.label_10.setFont(font6)
        self.label_10.setStyleSheet(u"")

        self.gridLayout.addWidget(self.label_10, 5, 1, 1, 1)

        self.clear_entry_button = QPushButton(self.data_entry_tab)
        self.clear_entry_button.setObjectName(u"clear_entry_button")
        sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
        sizePolicy3.setHorizontalStretch(0)
        sizePolicy3.setVerticalStretch(0)
        sizePolicy3.setHeightForWidth(
            self.clear_entry_button.sizePolicy().hasHeightForWidth())
        self.clear_entry_button.setSizePolicy(sizePolicy3)
        font7 = QFont()
        font7.setFamily(u"Microsoft YaHei UI")
        font7.setPointSize(11)
        font7.setBold(True)
        font7.setItalic(False)
        font7.setWeight(75)
        font7.setKerning(True)
        self.clear_entry_button.setFont(font7)
        self.clear_entry_button.setStyleSheet(
            u"QPushButton{\n"
            "background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0547264 rgba(10, 103, 95, 209), stop:1 rgba(13, 136, 125, 209));\n"
            "width:110%;\n"
            "height:40%;\n"
            "color:white;\n"
            "border-radius:8px;\n"
            "}\n"
            "\n"
            "\n"
            "  QPushButton:hover:!pressed\n"
            "{\n"
            "  border: 2px solid rgb(41, 135, 140);\n"
            "background-color:rgb(199, 248, 255);\n"
            "color:black;\n"
            "\n"
            "}")
        self.clear_entry_button.setIconSize(QSize(40, 40))

        self.gridLayout.addWidget(self.clear_entry_button, 12, 2, 1, 1)

        self.enter_data_button = QPushButton(self.data_entry_tab)
        self.enter_data_button.setObjectName(u"enter_data_button")
        sizePolicy3.setHeightForWidth(
            self.enter_data_button.sizePolicy().hasHeightForWidth())
        self.enter_data_button.setSizePolicy(sizePolicy3)
        font8 = QFont()
        font8.setFamily(u"Microsoft YaHei UI")
        font8.setPointSize(11)
        font8.setBold(True)
        font8.setItalic(False)
        font8.setWeight(75)
        self.enter_data_button.setFont(font8)
        self.enter_data_button.setStyleSheet(
            u"QPushButton{\n"
            "background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0547264 rgba(10, 103, 95, 209), stop:1 rgba(13, 136, 125, 209));\n"
            "width:110%;\n"
            "height:40%;\n"
            "color:white;\n"
            "border-radius:8px;\n"
            "}\n"
            "\n"
            "\n"
            "  QPushButton:hover:!pressed\n"
            "{\n"
            "  border: 2px solid rgb(41, 135, 140);\n"
            "background-color:rgb(199, 248, 255);\n"
            "color:black;\n"
            "\n"
            "}")

        self.gridLayout.addWidget(self.enter_data_button, 12, 4, 1, 1)

        self.label_3 = QLabel(self.data_entry_tab)
        self.label_3.setObjectName(u"label_3")
        sizePolicy4 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
        sizePolicy4.setHorizontalStretch(0)
        sizePolicy4.setVerticalStretch(0)
        sizePolicy4.setHeightForWidth(
            self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy4)
        self.label_3.setFont(font6)

        self.gridLayout.addWidget(self.label_3, 2, 1, 1, 1)

        self.more_trans_detail = QLineEdit(self.data_entry_tab)
        self.more_trans_detail.setObjectName(u"more_trans_detail")
        sizePolicy5 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
        sizePolicy5.setHorizontalStretch(0)
        sizePolicy5.setVerticalStretch(0)
        sizePolicy5.setHeightForWidth(
            self.more_trans_detail.sizePolicy().hasHeightForWidth())
        self.more_trans_detail.setSizePolicy(sizePolicy5)
        self.more_trans_detail.setMaximumSize(QSize(300, 16777215))
        font9 = QFont()
        font9.setFamily(u"Microsoft YaHei UI")
        font9.setPointSize(11)
        font9.setBold(False)
        font9.setItalic(False)
        font9.setWeight(50)
        self.more_trans_detail.setFont(font9)
        self.more_trans_detail.setStyleSheet(
            u"QLineEdit {\n"
            "	border-radius: 5px;\n"
            "	border: 2px solid rgb(27, 29, 35);\n"
            "	padding-left: 10px;\n"
            "}\n"
            "QLineEdit:hover {\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "}\n"
            "QLineEdit:focus {\n"
            "	border: 2px solid rgb(91, 101, 124);\n"
            "}")
        self.more_trans_detail.setCursorMoveStyle(Qt.VisualMoveStyle)
        self.more_trans_detail.setClearButtonEnabled(True)

        self.gridLayout.addWidget(self.more_trans_detail, 3, 7, 1, 1)

        self.method_of_trans = QComboBox(self.data_entry_tab)
        self.method_of_trans.setObjectName(u"method_of_trans")
        sizePolicy6 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
        sizePolicy6.setHorizontalStretch(0)
        sizePolicy6.setVerticalStretch(0)
        sizePolicy6.setHeightForWidth(
            self.method_of_trans.sizePolicy().hasHeightForWidth())
        self.method_of_trans.setSizePolicy(sizePolicy6)
        self.method_of_trans.setMaximumSize(QSize(300, 16777215))
        palette = QPalette()
        gradient = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient.setSpread(QGradient.PadSpread)
        gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush = QBrush(gradient)
        palette.setBrush(QPalette.Active, QPalette.Button, brush)
        gradient1 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient1.setSpread(QGradient.PadSpread)
        gradient1.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient1.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient1.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient1.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush1 = QBrush(gradient1)
        palette.setBrush(QPalette.Active, QPalette.Base, brush1)
        gradient2 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient2.setSpread(QGradient.PadSpread)
        gradient2.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient2.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient2.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient2.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush2 = QBrush(gradient2)
        palette.setBrush(QPalette.Active, QPalette.Window, brush2)
        gradient3 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient3.setSpread(QGradient.PadSpread)
        gradient3.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient3.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient3.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient3.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush3 = QBrush(gradient3)
        palette.setBrush(QPalette.Inactive, QPalette.Button, brush3)
        gradient4 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient4.setSpread(QGradient.PadSpread)
        gradient4.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient4.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient4.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient4.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush4 = QBrush(gradient4)
        palette.setBrush(QPalette.Inactive, QPalette.Base, brush4)
        gradient5 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient5.setSpread(QGradient.PadSpread)
        gradient5.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient5.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient5.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient5.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush5 = QBrush(gradient5)
        palette.setBrush(QPalette.Inactive, QPalette.Window, brush5)
        gradient6 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient6.setSpread(QGradient.PadSpread)
        gradient6.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient6.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient6.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient6.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush6 = QBrush(gradient6)
        palette.setBrush(QPalette.Disabled, QPalette.Button, brush6)
        gradient7 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient7.setSpread(QGradient.PadSpread)
        gradient7.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient7.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient7.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient7.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush7 = QBrush(gradient7)
        palette.setBrush(QPalette.Disabled, QPalette.Base, brush7)
        gradient8 = QLinearGradient(0.532552, 0, 0.522, 0.926136)
        gradient8.setSpread(QGradient.PadSpread)
        gradient8.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient8.setColorAt(0.0199005, QColor(50, 186, 144, 52))
        gradient8.setColorAt(0.482587, QColor(65, 156, 128, 54))
        gradient8.setColorAt(0.975124, QColor(75, 164, 181, 80))
        brush8 = QBrush(gradient8)
        palette.setBrush(QPalette.Disabled, QPalette.Window, brush8)
        self.method_of_trans.setPalette(palette)
        font10 = QFont()
        font10.setFamily(u"Microsoft YaHei UI")
        font10.setPointSize(12)
        font10.setBold(False)
        font10.setItalic(False)
        font10.setWeight(50)
        self.method_of_trans.setFont(font10)
        self.method_of_trans.setStyleSheet(
            u"QComboBox{\n"
            "	 background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(50, 186, 144, 52), stop:0.482587 rgba(65, 156, 128, 54), stop:0.975124 rgba(75, 164, 181, 80));\n"
            "}\n"
            "QComboBox:hover{\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "   \n"
            "}\n"
            "QComboBox QAbstractItemView {\n"
            "	padding: 10px;\n"
            "\n"
            "	background-color:rgb(170, 255, 230)\n"
            "	\n"
            " \n"
            "}\n"
            "\n"
            "QComboBox QAbstractItemView{border-radius: 5px;\n"
            "	border: 2px ;\n"
            "	padding: 5px;\n"
            "	padding-left: 10px;\n"
            "    }")

        self.gridLayout.addWidget(self.method_of_trans, 2, 7, 1, 1)

        self.horizontalLayout_2 = QHBoxLayout()
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.cash_radio = QRadioButton(self.data_entry_tab)
        self.cash_radio.setObjectName(u"cash_radio")
        sizePolicy7 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        sizePolicy7.setHorizontalStretch(0)
        sizePolicy7.setVerticalStretch(0)
        sizePolicy7.setHeightForWidth(
            self.cash_radio.sizePolicy().hasHeightForWidth())
        self.cash_radio.setSizePolicy(sizePolicy7)
        self.cash_radio.setMinimumSize(QSize(80, 0))
        self.cash_radio.setFont(font9)

        self.horizontalLayout_2.addWidget(self.cash_radio)

        self.main_radio = QRadioButton(self.data_entry_tab)
        self.main_radio.setObjectName(u"main_radio")
        self.main_radio.setMinimumSize(QSize(150, 0))
        self.main_radio.setFont(font9)

        self.horizontalLayout_2.addWidget(self.main_radio)

        self.building_radio = QRadioButton(self.data_entry_tab)
        self.building_radio.setObjectName(u"building_radio")
        self.building_radio.setMinimumSize(QSize(175, 0))
        font11 = QFont()
        font11.setFamily(u"Microsoft YaHei UI")
        font11.setPointSize(11)
        self.building_radio.setFont(font11)

        self.horizontalLayout_2.addWidget(self.building_radio)

        self.gridLayout.addLayout(self.horizontalLayout_2, 5, 7, 1, 1)

        self.label_9 = QLabel(self.data_entry_tab)
        self.label_9.setObjectName(u"label_9")
        sizePolicy2.setHeightForWidth(
            self.label_9.sizePolicy().hasHeightForWidth())
        self.label_9.setSizePolicy(sizePolicy2)
        self.label_9.setFont(font6)

        self.gridLayout.addWidget(self.label_9, 3, 1, 1, 4)

        self.label_4 = QLabel(self.data_entry_tab)
        self.label_4.setObjectName(u"label_4")
        sizePolicy2.setHeightForWidth(
            self.label_4.sizePolicy().hasHeightForWidth())
        self.label_4.setSizePolicy(sizePolicy2)
        self.label_4.setFont(font6)
        self.label_4.setStyleSheet(u"")

        self.gridLayout.addWidget(self.label_4, 4, 1, 1, 1)

        self.label_5 = QLabel(self.data_entry_tab)
        self.label_5.setObjectName(u"label_5")
        sizePolicy4.setHeightForWidth(
            self.label_5.sizePolicy().hasHeightForWidth())
        self.label_5.setSizePolicy(sizePolicy4)
        self.label_5.setFont(font6)

        self.gridLayout.addWidget(self.label_5, 7, 1, 1, 1)

        self.horizontalSpacer_9 = QSpacerItem(100, 20, QSizePolicy.Expanding,
                                              QSizePolicy.Minimum)

        self.gridLayout.addItem(self.horizontalSpacer_9, 12, 3, 1, 1)

        self.horizontalSpacer_8 = QSpacerItem(100, 20, QSizePolicy.Expanding,
                                              QSizePolicy.Minimum)

        self.gridLayout.addItem(self.horizontalSpacer_8, 12, 7, 1, 1)

        self.horizontalLayout_4 = QHBoxLayout()
        self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
        self.reversed_entry_increase = QCheckBox(self.data_entry_tab)
        self.reversed_entry_increase.setObjectName(u"reversed_entry_increase")
        self.reversed_entry_increase.setFont(font11)

        self.horizontalLayout_4.addWidget(self.reversed_entry_increase)

        self.reversed_entry_decrease = QCheckBox(self.data_entry_tab)
        self.reversed_entry_decrease.setObjectName(u"reversed_entry_decrease")
        self.reversed_entry_decrease.setFont(font11)

        self.horizontalLayout_4.addWidget(self.reversed_entry_decrease)

        self.gridLayout.addLayout(self.horizontalLayout_4, 8, 7, 1, 1)

        self.date_of_entry = QDateEdit(self.data_entry_tab)
        self.date_of_entry.setObjectName(u"date_of_entry")
        sizePolicy6.setHeightForWidth(
            self.date_of_entry.sizePolicy().hasHeightForWidth())
        self.date_of_entry.setSizePolicy(sizePolicy6)
        self.date_of_entry.setMaximumSize(QSize(150, 16777215))
        self.date_of_entry.setFont(font9)
        self.date_of_entry.setStyleSheet(
            u"QDateEdit{\n"
            "	border-radius: 5px;\n"
            "	border: 2px solid rgb(27, 29, 35);\n"
            "	padding: 5px;\n"
            "	padding-left: 10px;\n"
            "\n"
            "   background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(50, 186, 144, 52), stop:0.482587 rgba(65, 156, 128, 54), stop:0.975124 rgba(75, 164, 181, 80));\n"
            "		\n"
            "		\n"
            "}\n"
            "QDateEdit:hover{\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "   \n"
            "	\n"
            "		\n"
            "  \n"
            "}\n"
            "\n"
            "QCalendarWidget QToolButton{\n"
            "\n"
            "  	color: black;\n"
            "  	background-color:rgb(156, 255, 231);}\n"
            "\n"
            " \n"
            "\n"
            "QCalendarWidget QAbstractItemView:enabled \n"
            "  {\n"
            "  \n"
            "  	color: black;  \n"
            "  	background-color: rgb(198, 255, 232);  \n"
            "  	selection-background-color: rgb(64, 64, 64); \n"
            "  	selection-color: rgb(0, 255, 0); \n"
            "  }")
        self.date_of_entry.setMinimumDateTime(
            QDateTime(QDate(1767, 9, 14), QTime(0, 0, 0)))
        self.date_of_entry.setCalendarPopup(True)

        self.gridLayout.addWidget(self.date_of_entry, 4, 7, 1, 1)

        self.money = QLineEdit(self.data_entry_tab)
        self.money.setObjectName(u"money")
        sizePolicy6.setHeightForWidth(
            self.money.sizePolicy().hasHeightForWidth())
        self.money.setSizePolicy(sizePolicy6)
        self.money.setMaximumSize(QSize(200, 16777215))
        self.money.setFont(font9)
        self.money.setStyleSheet(u"QLineEdit {\n"
                                 "	border-radius: 5px;\n"
                                 "	border: 2px solid rgb(27, 29, 35);\n"
                                 "	padding-left: 10px;\n"
                                 "}\n"
                                 "QLineEdit:hover {\n"
                                 "	border: 2px solid rgb(64, 71, 88);\n"
                                 "}\n"
                                 "QLineEdit:focus {\n"
                                 "	border: 2px solid rgb(91, 101, 124);\n"
                                 "}")
        self.money.setInputMethodHints(Qt.ImhDigitsOnly)
        self.money.setText(u"")
        self.money.setFrame(True)
        self.money.setClearButtonEnabled(True)

        self.gridLayout.addWidget(self.money, 7, 7, 1, 1)

        self.label_2 = QLabel(self.data_entry_tab)
        self.label_2.setObjectName(u"label_2")
        sizePolicy2.setHeightForWidth(
            self.label_2.sizePolicy().hasHeightForWidth())
        self.label_2.setSizePolicy(sizePolicy2)
        self.label_2.setFont(font6)

        self.gridLayout.addWidget(self.label_2, 1, 1, 1, 1)

        self.trans_type = QComboBox(self.data_entry_tab)
        self.trans_type.addItem(u"Income")
        self.trans_type.addItem("")
        self.trans_type.addItem("")
        self.trans_type.addItem("")
        self.trans_type.setObjectName(u"trans_type")
        sizePolicy6.setHeightForWidth(
            self.trans_type.sizePolicy().hasHeightForWidth())
        self.trans_type.setSizePolicy(sizePolicy6)
        self.trans_type.setMaximumSize(QSize(300, 16777215))
        self.trans_type.setFont(font9)
        self.trans_type.setStyleSheet(
            u"QComboBox{\n"
            "	 background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(50, 186, 144, 52), stop:0.482587 rgba(65, 156, 128, 54), stop:0.975124 rgba(75, 164, 181, 80));\n"
            "	\n"
            "		\n"
            "	\n"
            "\n"
            "	\n"
            "\n"
            "    \n"
            "}\n"
            "QComboBox:hover{\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "   \n"
            "	\n"
            "}\n"
            "QComboBox QAbstractItemView {\n"
            "	padding: 10px;\n"
            "\n"
            "	background-color:rgb(170, 255, 230)\n"
            "	\n"
            " \n"
            "}\n"
            "\n"
            "QComboBox QAbstractItemView{border-radius: 5px;\n"
            "	border: 2px ;\n"
            "	padding: 5px;\n"
            "	padding-left: 10px;\n"
            "    }")
        self.trans_type.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        self.trans_type.setFrame(True)

        self.gridLayout.addWidget(self.trans_type, 1, 7, 1, 1)

        self.cheque_label = QLabel(self.data_entry_tab)
        self.cheque_label.setObjectName(u"cheque_label")
        self.cheque_label.setFont(font11)

        self.gridLayout.addWidget(self.cheque_label, 6, 1, 1, 1)

        self.cheque_number = QLineEdit(self.data_entry_tab)
        self.cheque_number.setObjectName(u"cheque_number")
        sizePolicy6.setHeightForWidth(
            self.cheque_number.sizePolicy().hasHeightForWidth())
        self.cheque_number.setSizePolicy(sizePolicy6)
        self.cheque_number.setMaximumSize(QSize(200, 16777215))
        self.cheque_number.setFont(font11)
        self.cheque_number.setStyleSheet(
            u"QLineEdit {\n"
            "	border-radius: 5px;\n"
            "	border: 2px solid rgb(27, 29, 35);\n"
            "	padding-left: 10px;\n"
            "}\n"
            "QLineEdit:hover {\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "}\n"
            "QLineEdit:focus {\n"
            "	border: 2px solid rgb(91, 101, 124);\n"
            "}")

        self.gridLayout.addWidget(self.cheque_number, 6, 7, 1, 1)

        self.tabWidget.addTab(self.data_entry_tab, "")
        self.report_gen_tab = QWidget()
        self.report_gen_tab.setObjectName(u"report_gen_tab")
        self.gridLayout_2 = QGridLayout(self.report_gen_tab)
        self.gridLayout_2.setObjectName(u"gridLayout_2")
        self.gridLayout_2.setHorizontalSpacing(10)
        self.gridLayout_2.setVerticalSpacing(20)
        self.gridLayout_2.setContentsMargins(80, 20, 20, 10)
        self.label_6 = QLabel(self.report_gen_tab)
        self.label_6.setObjectName(u"label_6")
        sizePolicy2.setHeightForWidth(
            self.label_6.sizePolicy().hasHeightForWidth())
        self.label_6.setSizePolicy(sizePolicy2)
        self.label_6.setFont(font9)

        self.gridLayout_2.addWidget(self.label_6, 3, 0, 1, 1)

        self.report_date_from = QDateEdit(self.report_gen_tab)
        self.report_date_from.setObjectName(u"report_date_from")
        sizePolicy3.setHeightForWidth(
            self.report_date_from.sizePolicy().hasHeightForWidth())
        self.report_date_from.setSizePolicy(sizePolicy3)
        font12 = QFont()
        font12.setFamily(u"Microsoft YaHei UI")
        font12.setPointSize(11)
        font12.setBold(False)
        font12.setItalic(False)
        font12.setUnderline(False)
        font12.setWeight(50)
        self.report_date_from.setFont(font12)
        self.report_date_from.setStyleSheet(
            u"QDateEdit{\n"
            "	border-radius: 5px;\n"
            "	border: 2px solid rgb(27, 29, 35);\n"
            "	padding: 5px;\n"
            "	padding-left: 10px;\n"
            "\n"
            "   background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(50, 186, 144, 52), stop:0.482587 rgba(65, 156, 128, 54), stop:0.975124 rgba(75, 164, 181, 80));\n"
            "		\n"
            "		\n"
            "}\n"
            "QDateEdit:hover{\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "   \n"
            "	\n"
            "		\n"
            "  \n"
            "}\n"
            "\n"
            "QCalendarWidget QToolButton{\n"
            "\n"
            "  	color: black;\n"
            "  	background-color:rgb(156, 255, 231);}\n"
            "\n"
            " \n"
            "\n"
            "QCalendarWidget QAbstractItemView:enabled \n"
            "  {\n"
            "  \n"
            "  	color: black;  \n"
            "  	background-color: rgb(198, 255, 232);  \n"
            "  	selection-background-color: rgb(64, 64, 64); \n"
            "  	selection-color: rgb(0, 255, 0); \n"
            "  }")
        self.report_date_from.setDateTime(
            QDateTime(QDate(2020, 1, 1), QTime(0, 0, 0)))
        self.report_date_from.setMinimumDateTime(
            QDateTime(QDate(2010, 9, 14), QTime(0, 0, 0)))
        self.report_date_from.setMaximumDate(QDate(9999, 11, 30))
        self.report_date_from.setCalendarPopup(True)
        self.report_date_from.setDate(QDate(2020, 1, 1))

        self.gridLayout_2.addWidget(self.report_date_from, 3, 4, 1, 1)

        self.label_7 = QLabel(self.report_gen_tab)
        self.label_7.setObjectName(u"label_7")
        sizePolicy2.setHeightForWidth(
            self.label_7.sizePolicy().hasHeightForWidth())
        self.label_7.setSizePolicy(sizePolicy2)
        self.label_7.setFont(font9)

        self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 1)

        self.report_date_to = QDateEdit(self.report_gen_tab)
        self.report_date_to.setObjectName(u"report_date_to")
        sizePolicy3.setHeightForWidth(
            self.report_date_to.sizePolicy().hasHeightForWidth())
        self.report_date_to.setSizePolicy(sizePolicy3)
        self.report_date_to.setFont(font12)
        self.report_date_to.setStyleSheet(
            u"QDateEdit{\n"
            "	border-radius: 5px;\n"
            "	border: 2px solid rgb(27, 29, 35);\n"
            "	padding: 5px;\n"
            "	padding-left: 10px;\n"
            "\n"
            "   background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0199005 rgba(50, 186, 144, 52), stop:0.482587 rgba(65, 156, 128, 54), stop:0.975124 rgba(75, 164, 181, 80));\n"
            "		\n"
            "		\n"
            "}\n"
            "QDateEdit:hover{\n"
            "	border: 2px solid rgb(64, 71, 88);\n"
            "   \n"
            "	\n"
            "		\n"
            "  \n"
            "}\n"
            "\n"
            "QCalendarWidget QToolButton{\n"
            "\n"
            "  	color: black;\n"
            "  	background-color:rgb(156, 255, 231);}\n"
            "\n"
            " \n"
            "\n"
            "QCalendarWidget QAbstractItemView:enabled \n"
            "  {\n"
            "  \n"
            "  	color: black;  \n"
            "  	background-color: rgb(198, 255, 232);  \n"
            "  	selection-background-color: rgb(64, 64, 64); \n"
            "  	selection-color: rgb(0, 255, 0); \n"
            "  }")
        self.report_date_to.setWrapping(False)
        self.report_date_to.setReadOnly(False)
        self.report_date_to.setProperty("showGroupSeparator", False)
        self.report_date_to.setDateTime(
            QDateTime(QDate(2020, 1, 1), QTime(0, 0, 0)))
        self.report_date_to.setMinimumDateTime(
            QDateTime(QDate(2010, 9, 14), QTime(0, 0, 0)))
        self.report_date_to.setCurrentSection(QDateTimeEdit.DaySection)
        self.report_date_to.setCalendarPopup(True)
        self.report_date_to.setTimeSpec(Qt.TimeZone)

        self.gridLayout_2.addWidget(self.report_date_to, 4, 4, 1, 1)

        self.label_12 = QLabel(self.report_gen_tab)
        self.label_12.setObjectName(u"label_12")
        sizePolicy2.setHeightForWidth(
            self.label_12.sizePolicy().hasHeightForWidth())
        self.label_12.setSizePolicy(sizePolicy2)
        font13 = QFont()
        font13.setFamily(u"Microsoft YaHei UI")
        font13.setPointSize(11)
        font13.setBold(False)
        font13.setWeight(50)
        self.label_12.setFont(font13)

        self.gridLayout_2.addWidget(self.label_12, 6, 0, 1, 1)

        self.comboBox = QComboBox(self.report_gen_tab)
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.setObjectName(u"comboBox")
        sizePolicy3.setHeightForWidth(
            self.comboBox.sizePolicy().hasHeightForWidth())
        self.comboBox.setSizePolicy(sizePolicy3)
        self.comboBox.setMinimumSize(QSize(70, 0))
        self.comboBox.setFont(font13)
        self.comboBox.setStyleSheet(u"QComboBox{\n"
                                    "	border-radius: 5px;\n"
                                    "	border: 2px solid rgb(27, 29, 35);\n"
                                    "	padding: 5px;\n"
                                    "	padding-left: 10px;\n"
                                    "}\n"
                                    "QComboBox:hover{\n"
                                    "	border: 2px solid rgb(64, 71, 88);\n"
                                    "}\n"
                                    "QComboBox QAbstractItemView {\n"
                                    "	padding: 10px;\n"
                                    "}")

        self.gridLayout_2.addWidget(self.comboBox, 6, 4, 1, 1)

        self.preview_report_button = QPushButton(self.report_gen_tab)
        self.preview_report_button.setObjectName(u"preview_report_button")
        sizePolicy3.setHeightForWidth(
            self.preview_report_button.sizePolicy().hasHeightForWidth())
        self.preview_report_button.setSizePolicy(sizePolicy3)
        self.preview_report_button.setMinimumSize(QSize(157, 0))
        self.preview_report_button.setFont(font8)
        self.preview_report_button.setStyleSheet(
            u"QPushButton{\n"
            "background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0547264 rgba(10, 103, 95, 209), stop:1 rgba(13, 136, 125, 209));\n"
            "width:130%;\n"
            "height:40%;\n"
            "color:white;\n"
            "border-radius:8px;\n"
            "}\n"
            "\n"
            "QPushButton:hover:!pressed\n"
            "{\n"
            "  border: 2px solid rgb(41, 135, 140);\n"
            "background-color:rgb(199, 248, 255);\n"
            "color:black;\n"
            "}")

        self.gridLayout_2.addWidget(self.preview_report_button, 7, 2, 1, 1)

        self.export_pdf_button = QPushButton(self.report_gen_tab)
        self.export_pdf_button.setObjectName(u"export_pdf_button")
        sizePolicy3.setHeightForWidth(
            self.export_pdf_button.sizePolicy().hasHeightForWidth())
        self.export_pdf_button.setSizePolicy(sizePolicy3)
        self.export_pdf_button.setMinimumSize(QSize(208, 0))
        self.export_pdf_button.setFont(font8)
        self.export_pdf_button.setLayoutDirection(Qt.LeftToRight)
        self.export_pdf_button.setStyleSheet(
            u"QPushButton{\n"
            "background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0547264 rgba(10, 103, 95, 209), stop:1 rgba(13, 136, 125, 209));\n"
            "width:170%;\n"
            "height:40%;\n"
            "color:white;\n"
            "border-radius:8px;\n"
            "}\n"
            "\n"
            "QPushButton:hover:!pressed\n"
            "{\n"
            "  border: 2px solid rgb(41, 135, 140);\n"
            "background-color:rgb(199, 248, 255);\n"
            "color:black;\n"
            "}")
        self.export_pdf_button.setFlat(False)

        self.gridLayout_2.addWidget(self.export_pdf_button, 7, 3, 1, 1)

        self.label_8 = QLabel(self.report_gen_tab)
        self.label_8.setObjectName(u"label_8")
        sizePolicy7.setHeightForWidth(
            self.label_8.sizePolicy().hasHeightForWidth())
        self.label_8.setSizePolicy(sizePolicy7)
        font14 = QFont()
        font14.setFamily(u"Microsoft YaHei UI")
        font14.setPointSize(15)
        font14.setBold(False)
        font14.setItalic(False)
        font14.setWeight(50)
        self.label_8.setFont(font14)
        self.label_8.setStyleSheet(u"background-color:rgba(0,0,0,0%);\n"
                                   "color:rgb(35, 93, 74)")
        self.label_8.setAlignment(Qt.AlignCenter)
        self.label_8.setMargin(10)

        self.gridLayout_2.addWidget(self.label_8, 0, 1, 1, 3)

        self.print_report_button = QPushButton(self.report_gen_tab)
        self.print_report_button.setObjectName(u"print_report_button")
        sizePolicy3.setHeightForWidth(
            self.print_report_button.sizePolicy().hasHeightForWidth())
        self.print_report_button.setSizePolicy(sizePolicy3)
        self.print_report_button.setMinimumSize(QSize(140, 0))
        self.print_report_button.setFont(font8)
        self.print_report_button.setStyleSheet(
            u"QPushButton{\n"
            "background-color:qlineargradient(spread:pad, x1:0.532552, y1:0, x2:0.522, y2:0.926136, stop:0.0547264 rgba(10, 103, 95, 209), stop:1 rgba(13, 136, 125, 209));\n"
            "width:100%;\n"
            "height:40%;\n"
            "color:white;\n"
            "border-radius:8px;\n"
            "}\n"
            "\n"
            "QPushButton:hover:!pressed\n"
            "{\n"
            "  border: 2px solid rgb(41, 135, 140);\n"
            "background-color:rgb(199, 248, 255);\n"
            "color:black;\n"
            "}")

        self.gridLayout_2.addWidget(self.print_report_button, 7, 1, 1, 1)

        self.tabWidget.addTab(self.report_gen_tab, "")

        self.verticalLayout.addWidget(self.tabWidget)

        self.verticalLayout_2.addLayout(self.verticalLayout)

        DsManager.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(DsManager)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 1156, 24))
        font15 = QFont()
        font15.setFamily(u"Candara")
        font15.setBold(True)
        font15.setWeight(75)
        self.menubar.setFont(font15)
        self.menubar.setStyleSheet(u"QMenuBar{\n"
                                   "background-color:rgb(122, 224, 210);\n"
                                   "}\n"
                                   "\n"
                                   "QMenu:!pressed\n"
                                   "{\n"
                                   "	selection-color: rgb(85, 0, 127);\n"
                                   "	background-color:rgb(139, 234, 255);\n"
                                   "}")
        self.menuAbout = QMenu(self.menubar)
        self.menuAbout.setObjectName(u"menuAbout")
        self.menuFile = QMenu(self.menubar)
        self.menuFile.setObjectName(u"menuFile")
        DsManager.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(DsManager)
        self.statusbar.setObjectName(u"statusbar")
        DsManager.setStatusBar(self.statusbar)

        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuAbout.menuAction())
        self.menuAbout.addAction(self.actionAbut_DS_Manager)
        self.menuFile.addAction(self.actionBackup_Database)
        self.menuFile.addAction(self.actionRestore_Database)

        self.retranslateUi(DsManager)

        self.tabWidget.setCurrentIndex(0)

        QMetaObject.connectSlotsByName(DsManager)
Beispiel #5
0
    def __init__(self,
                 parent,
                 capacity,
                 color,
                 gradient_start=None,
                 gradient_end=None,
                 speeds=(),
                 is_upload=False,
                 dp=1,
                 max_speed=0):
        self._parent = parent
        self._capacity = capacity
        self._color = color
        self._gradient_start = gradient_start if gradient_start \
            else self._color
        self._gradient_end = gradient_end if gradient_end \
            else self._color.lighter()
        self._last_max_speed = max_speed

        self._chart = QtCharts.QChart()

        self._line_series = QtCharts.QLineSeries()
        self._lower_series = QtCharts.QLineSeries()
        if len(speeds) > self._capacity:
            speeds = speeds[len(speeds) - self._capacity:]
        for i, speed in enumerate(speeds):
            self._line_series.append(i, speed)
            self._lower_series.append(i, 0)
        self._last_index = len(speeds)

        self._series = QtCharts.QAreaSeries(self._line_series,
                                            self._lower_series)
        pen = QPen(self._color)
        pen.setWidth(1)
        self._series.setPen(pen)

        self._series.lowerSeries().setColor(self._gradient_end)

        gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
        gradient.setColorAt(0.0, self._gradient_start)
        gradient.setColorAt(1.0, self._gradient_end)
        gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
        self._series.setBrush(gradient)

        self._chart.addSeries(self._series)
        self._chart.layout().setContentsMargins(0, 0, 0, 0)
        # make chart look bigger
        margins = [-35, -25, -35, -37]
        self._chart.setContentsMargins(*margins)
        self._chart.setBackgroundRoundness(0)

        grid_pen = QPen(QColor("#EFEFF4"))
        grid_pen.setWidth(1)

        self._chart.createDefaultAxes()
        self._chart.axisX().setLabelsVisible(False)
        # self._chart.axisY().setLabelsVisible(False)
        self._chart.axisX().setTitleVisible(False)
        # self._chart.axisY().setTitleVisible(False)
        self._chart.axisX().setGridLineVisible(True)
        self._chart.axisX().setGridLinePen(grid_pen)
        # self._chart.axisY().setGridLineVisible(False)
        # self._chart.axisY().setGridLinePen(grid_pen)
        self._chart.axisX().setLineVisible(False)
        self._chart.axisY().setLineVisible(False)
        self._chart.axisX().setRange(self._last_index - self._capacity,
                                     self._last_index - 1)
        self._set_y_range()
        self._chart.axisY().hide()
        # self._chart.setBackgroundBrush(QBrush(QColor("#EFEFF4")))

        self._view = QtCharts.QChartView(self._chart, self._parent)
        self._view.setRenderHint(QPainter.Antialiasing)
        self._view.setFixedSize(self._parent.size())
        self._view.chart().legend().hide()
        self._chart.resize(self._view.width(), self._view.height())

        text_start = ""
        self._scale_line = ScaleLine(self._chart,
                                     QColor("#777777"),
                                     QColor("black"),
                                     text_start=text_start,
                                     margins=margins,
                                     dp=dp,
                                     is_upload=is_upload)
        self._scale_line.set_line(self._last_max_speed, resize=True)
Beispiel #6
0
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(539, 629)
        sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setMinimumSize(QSize(500, 420))
        font = QFont()
        font.setFamily(u"Titillium Web")
        font.setPointSize(10)
        MainWindow.setFont(font)
        icon = QIcon()
        icon.addFile(u":/res/ui/guiscrcpy_logo.png", QSize(), QIcon.Normal, QIcon.Off)
        MainWindow.setWindowIcon(icon)
        MainWindow.setStyleSheet(u"QPushButton {\n"
"border-radius: 10px;\n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 255, 255, 255), stop:1 rgba(0, 255, 152, 255));\n"
"color: rgb(0, 0, 0);\n"
"}\n"
"QPushButton:pressed {\n"
"border-radius: 10px;\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 255, 255, 255), stop:1 rgba(0, 255, 152, 255));\n"
"color: rgb(0, 0, 0);\n"
"}\n"
".QPushButton:hover {\n"
"border-radius: 10px;\n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 199, 199, 255), stop:1 rgba(0, 190, 113, 255));\n"
"color: rgb(0, 0, 0);\n"
" }\n"
".QPushButton#quit{\n"
"                        background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:0, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 155, 0, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
" }\n"
".QPushButton#quit:hover{             \n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:0, stop:0 rgba(172, 0, 0,"
                        " 255), stop:1 rgba(175, 106, 0, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
" }\n"
".QPushButton#usbaud{\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 0, 255, 255), stop:0.901961 rgba(152, 0, 255, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
"}\n"
".QPushButton#usbaud:hover{                        \n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:0, stop:0 rgba(172, 0, 0, 255), stop:1 rgba(175, 106, 0, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
"}\n"
".QPushButton#mapnow{\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:0, stop:0 rgba(253, 0, 255, 255), stop:0.990196 rgba(88, 0, 255, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
" }\n"
".QPushButton#initmapnow{\n"
"background-color: qlineargradient(spread:pad, x1:1, y1:1, x2:0, y2:0, stop:0.0196078 rgba(0, 141, 255, 255), stop:1 rgba(52, 0, 255, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
"}\n"
"."
                        "QPushButton#initmapnow:hover{\n"
"background-color:qlineargradient(spread:pad, x1:1, y1:1, x2:0, y2:0, stop:0.0196078 rgba(0, 72, 131, 255), stop:1 rgba(24, 0, 122, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
" }\n"
".QPushButton#mapnow:hover{\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:0, stop:0 rgba(199, 0, 255, 255), stop:0.990196 rgba(88, 0, 255, 255));\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
"}\n"
".QPushButton#network_button{\n"
"background-color: rgb(10, 10, 10);\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;	\n"
" }\n"
".QPushButton#settings_button{\n"
"background-color: rgb(10, 10, 10);\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;	\n"
" }\n"
".QPushButton#refreshdevices{\n"
"background-color: rgb(10, 10, 10);\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;	\n"
" }\n"
".QPushButton#restart_adb_server{\n"
"background-color: rgb(10, 10, 10);\n"
"color: rgb(0, 0, 0);\n"
"border-radius: 10px;	\n"
" }\n"
"\n"
"\n"
"\n"
"")
        MainWindow.setUnifiedTitleAndToolBarOnMac(False)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.centralwidget.setEnabled(True)
        sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy1.setHorizontalStretch(24)
        sizePolicy1.setVerticalStretch(25)
        sizePolicy1.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
        self.centralwidget.setSizePolicy(sizePolicy1)
        self.centralwidget.setMinimumSize(QSize(500, 300))
        self.centralwidget.setStyleSheet(u"")
        self.gridLayout_5 = QGridLayout(self.centralwidget)
        self.gridLayout_5.setObjectName(u"gridLayout_5")
        self.frame = QFrame(self.centralwidget)
        self.frame.setObjectName(u"frame")
        sizePolicy2 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy2.setHorizontalStretch(0)
        sizePolicy2.setVerticalStretch(0)
        sizePolicy2.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
        self.frame.setSizePolicy(sizePolicy2)
        self.verticalLayout = QVBoxLayout(self.frame)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.verticalLayout.setSizeConstraint(QLayout.SetMaximumSize)
        self.verticalLayout.setContentsMargins(7, 1, 7, -1)
        self.gridLayout_4 = QGridLayout()
        self.gridLayout_4.setObjectName(u"gridLayout_4")
        self.gridLayout_4.setSizeConstraint(QLayout.SetMinimumSize)
        self.gridLayout_4.setVerticalSpacing(1)
        self.fullscreen = QCheckBox(self.frame)
        self.fullscreen.setObjectName(u"fullscreen")
        sizePolicy2.setHeightForWidth(self.fullscreen.sizePolicy().hasHeightForWidth())
        self.fullscreen.setSizePolicy(sizePolicy2)
        self.fullscreen.setMinimumSize(QSize(10, 20))
        font1 = QFont()
        font1.setFamily(u"Noto Sans")
        font1.setPointSize(10)
        self.fullscreen.setFont(font1)
        icon1 = QIcon()
        icon1.addFile(u":/icons/icons/increase-size-option.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.fullscreen.setIcon(icon1)

        self.gridLayout_4.addWidget(self.fullscreen, 0, 4, 1, 1)

        self.aotop = QCheckBox(self.frame)
        self.aotop.setObjectName(u"aotop")
        sizePolicy2.setHeightForWidth(self.aotop.sizePolicy().hasHeightForWidth())
        self.aotop.setSizePolicy(sizePolicy2)
        self.aotop.setMinimumSize(QSize(10, 20))
        self.aotop.setFont(font1)
        self.aotop.setToolTipDuration(2)
        icon2 = QIcon()
        icon2.addFile(u":/icons/icons/fire-symbol.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.aotop.setIcon(icon2)

        self.gridLayout_4.addWidget(self.aotop, 1, 5, 1, 1)

        self.refreshdevices = QPushButton(self.frame)
        self.refreshdevices.setObjectName(u"refreshdevices")
        sizePolicy2.setHeightForWidth(self.refreshdevices.sizePolicy().hasHeightForWidth())
        self.refreshdevices.setSizePolicy(sizePolicy2)
        self.refreshdevices.setMinimumSize(QSize(22, 22))
        self.refreshdevices.setMaximumSize(QSize(30, 16777215))
        icon3 = QIcon()
        icon3.addFile(u":/icons/icons/refresh-page-option.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.refreshdevices.setIcon(icon3)
        self.refreshdevices.setIconSize(QSize(15, 15))

        self.gridLayout_4.addWidget(self.refreshdevices, 7, 2, 1, 1)

        self.check_swipe_panel = QCheckBox(self.frame)
        self.check_swipe_panel.setObjectName(u"check_swipe_panel")
        self.check_swipe_panel.setFont(font1)
        icon4 = QIcon()
        icon4.addFile(u":/icons/icons/guiscrcpy_swipe_panel.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.check_swipe_panel.setIcon(icon4)

        self.gridLayout_4.addWidget(self.check_swipe_panel, 2, 0, 1, 4)

        self.showTouches = QCheckBox(self.frame)
        self.showTouches.setObjectName(u"showTouches")
        sizePolicy2.setHeightForWidth(self.showTouches.sizePolicy().hasHeightForWidth())
        self.showTouches.setSizePolicy(sizePolicy2)
        self.showTouches.setMinimumSize(QSize(10, 20))
        self.showTouches.setFont(font1)
        icon5 = QIcon()
        icon5.addFile(u":/icons/icons/hand-finger-pointing-down.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.showTouches.setIcon(icon5)

        self.gridLayout_4.addWidget(self.showTouches, 2, 4, 1, 1)

        self.recScui = QCheckBox(self.frame)
        self.recScui.setObjectName(u"recScui")
        self.recScui.setEnabled(True)
        sizePolicy2.setHeightForWidth(self.recScui.sizePolicy().hasHeightForWidth())
        self.recScui.setSizePolicy(sizePolicy2)
        self.recScui.setMinimumSize(QSize(10, 20))
        font2 = QFont()
        font2.setFamily(u"Noto Sans")
        font2.setPointSize(10)
        font2.setBold(False)
        font2.setItalic(False)
        font2.setWeight(50)
        self.recScui.setFont(font2)
        self.recScui.setToolTipDuration(2)
        icon6 = QIcon()
        icon6.addFile(u":/icons/icons/facetime-button.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.recScui.setIcon(icon6)

        self.gridLayout_4.addWidget(self.recScui, 0, 5, 1, 1)

        self.displayForceOn = QCheckBox(self.frame)
        self.displayForceOn.setObjectName(u"displayForceOn")
        sizePolicy2.setHeightForWidth(self.displayForceOn.sizePolicy().hasHeightForWidth())
        self.displayForceOn.setSizePolicy(sizePolicy2)
        self.displayForceOn.setMinimumSize(QSize(10, 20))
        self.displayForceOn.setFont(font1)
        self.displayForceOn.setToolTipDuration(2)
        icon7 = QIcon()
        icon7.addFile(u":/icons/icons/bullseye.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.displayForceOn.setIcon(icon7)

        self.gridLayout_4.addWidget(self.displayForceOn, 1, 4, 1, 1)

        self.lock_rotation = QCheckBox(self.frame)
        self.lock_rotation.setObjectName(u"lock_rotation")
        self.lock_rotation.setFont(font1)
        icon8 = QIcon()
        icon8.addFile(u":/icons/icons/padlock.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.lock_rotation.setIcon(icon8)

        self.gridLayout_4.addWidget(self.lock_rotation, 2, 5, 1, 1)

        self.check_bottom_panel = QCheckBox(self.frame)
        self.check_bottom_panel.setObjectName(u"check_bottom_panel")
        self.check_bottom_panel.setFont(font1)
        icon9 = QIcon()
        icon9.addFile(u":/icons/icons/guiscrcpy_bottom_panel.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.check_bottom_panel.setIcon(icon9)

        self.gridLayout_4.addWidget(self.check_bottom_panel, 0, 0, 1, 4)

        self.network_button = QPushButton(self.frame)
        self.network_button.setObjectName(u"network_button")
        sizePolicy3 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
        sizePolicy3.setHorizontalStretch(0)
        sizePolicy3.setVerticalStretch(0)
        sizePolicy3.setHeightForWidth(self.network_button.sizePolicy().hasHeightForWidth())
        self.network_button.setSizePolicy(sizePolicy3)
        self.network_button.setToolTipDuration(2)
        icon10 = QIcon()
        icon10.addFile(u":/icons/icons/wifi.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.network_button.setIcon(icon10)

        self.gridLayout_4.addWidget(self.network_button, 7, 0, 1, 1)

        self.check_side_panel = QCheckBox(self.frame)
        self.check_side_panel.setObjectName(u"check_side_panel")
        self.check_side_panel.setFont(font1)
        icon11 = QIcon()
        icon11.addFile(u":/icons/icons/guiscrcpy_side_panel.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.check_side_panel.setIcon(icon11)

        self.gridLayout_4.addWidget(self.check_side_panel, 1, 0, 1, 4)

        self.settings_button = QPushButton(self.frame)
        self.settings_button.setObjectName(u"settings_button")
        sizePolicy3.setHeightForWidth(self.settings_button.sizePolicy().hasHeightForWidth())
        self.settings_button.setSizePolicy(sizePolicy3)
        icon12 = QIcon()
        icon12.addFile(u":/icons/icons/gear.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.settings_button.setIcon(icon12)

        self.gridLayout_4.addWidget(self.settings_button, 7, 1, 1, 1)

        self.device_rotation = QComboBox(self.frame)
        self.device_rotation.addItem("")
        self.device_rotation.addItem("")
        self.device_rotation.addItem("")
        self.device_rotation.addItem("")
        self.device_rotation.addItem("")
        self.device_rotation.setObjectName(u"device_rotation")
        font3 = QFont()
        font3.setFamily(u"Noto Sans")
        font3.setPointSize(11)
        self.device_rotation.setFont(font3)

        self.gridLayout_4.addWidget(self.device_rotation, 7, 5, 1, 1)

        self.restart_adb_server = QPushButton(self.frame)
        self.restart_adb_server.setObjectName(u"restart_adb_server")
        sizePolicy2.setHeightForWidth(self.restart_adb_server.sizePolicy().hasHeightForWidth())
        self.restart_adb_server.setSizePolicy(sizePolicy2)
        self.restart_adb_server.setMinimumSize(QSize(22, 22))
        self.restart_adb_server.setMaximumSize(QSize(30, 16777215))
        self.restart_adb_server.setToolTipDuration(2)
        self.restart_adb_server.setIcon(icon7)
        self.restart_adb_server.setIconSize(QSize(15, 15))

        self.gridLayout_4.addWidget(self.restart_adb_server, 7, 3, 1, 1)


        self.verticalLayout.addLayout(self.gridLayout_4)

        self.devices_view = QListWidget(self.frame)
        icon13 = QIcon()
        icon13.addFile(u":/icons/icons/android.svg", QSize(), QIcon.Normal, QIcon.Off)
        __qlistwidgetitem = QListWidgetItem(self.devices_view)
        __qlistwidgetitem.setTextAlignment(Qt.AlignCenter);
        __qlistwidgetitem.setIcon(icon13);
        self.devices_view.setObjectName(u"devices_view")
        sizePolicy2.setHeightForWidth(self.devices_view.sizePolicy().hasHeightForWidth())
        self.devices_view.setSizePolicy(sizePolicy2)
        self.devices_view.setMaximumSize(QSize(16777215, 90))
        font4 = QFont()
        font4.setFamily(u"Noto Sans")
        font4.setPointSize(9)
        self.devices_view.setFont(font4)
        self.devices_view.setAutoFillBackground(True)
        self.devices_view.setStyleSheet(u"alternate-background-color: rgb(35, 35, 35);")
        self.devices_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.devices_view.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
        self.devices_view.setAutoScrollMargin(9)
        self.devices_view.setAlternatingRowColors(True)
        self.devices_view.setIconSize(QSize(35, 35))
        self.devices_view.setTextElideMode(Qt.ElideMiddle)
        self.devices_view.setProperty("isWrapping", False)
        self.devices_view.setResizeMode(QListView.Adjust)
        self.devices_view.setViewMode(QListView.IconMode)
        self.devices_view.setUniformItemSizes(True)
        self.devices_view.setBatchSize(100)
        self.devices_view.setItemAlignment(Qt.AlignCenter)
        self.devices_view.setSortingEnabled(True)

        self.verticalLayout.addWidget(self.devices_view)

        self.private_message_box_adb = QPushButton(self.frame)
        self.private_message_box_adb.setObjectName(u"private_message_box_adb")
        sizePolicy2.setHeightForWidth(self.private_message_box_adb.sizePolicy().hasHeightForWidth())
        self.private_message_box_adb.setSizePolicy(sizePolicy2)
        self.private_message_box_adb.setFont(font3)

        self.verticalLayout.addWidget(self.private_message_box_adb)

        self.gridLayout_3 = QGridLayout()
        self.gridLayout_3.setSpacing(0)
        self.gridLayout_3.setObjectName(u"gridLayout_3")
        self.dimensionDefaultCheckbox = QCheckBox(self.frame)
        self.dimensionDefaultCheckbox.setObjectName(u"dimensionDefaultCheckbox")
        sizePolicy2.setHeightForWidth(self.dimensionDefaultCheckbox.sizePolicy().hasHeightForWidth())
        self.dimensionDefaultCheckbox.setSizePolicy(sizePolicy2)
        font5 = QFont()
        font5.setFamily(u"Noto Sans")
        font5.setPointSize(11)
        font5.setBold(False)
        font5.setItalic(False)
        font5.setWeight(50)
        self.dimensionDefaultCheckbox.setFont(font5)
        self.dimensionDefaultCheckbox.setChecked(True)

        self.gridLayout_3.addWidget(self.dimensionDefaultCheckbox, 0, 3, 1, 2)

        self.label = QLabel(self.frame)
        self.label.setObjectName(u"label")
        sizePolicy2.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy2)
        self.label.setFont(font3)

        self.gridLayout_3.addWidget(self.label, 0, 1, 1, 1)

        self.bitrateText = QLineEdit(self.frame)
        self.bitrateText.setObjectName(u"bitrateText")
        sizePolicy2.setHeightForWidth(self.bitrateText.sizePolicy().hasHeightForWidth())
        self.bitrateText.setSizePolicy(sizePolicy2)
        font6 = QFont()
        font6.setFamily(u"Titillium Web")
        font6.setPointSize(26)
        font6.setBold(True)
        font6.setWeight(75)
        self.bitrateText.setFont(font6)
        self.bitrateText.setStyleSheet(u"color: rgb(0, 0, 0);\n"
"border-radius: 10px;\n"
"\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 255, 255, 255), stop:1 rgba(0, 255, 0, 255));")
        self.bitrateText.setAlignment(Qt.AlignCenter)

        self.gridLayout_3.addWidget(self.bitrateText, 2, 1, 1, 1)

        self.dial = QDial(self.frame)
        self.dial.setObjectName(u"dial")
        sizePolicy4 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        sizePolicy4.setHorizontalStretch(0)
        sizePolicy4.setVerticalStretch(0)
        sizePolicy4.setHeightForWidth(self.dial.sizePolicy().hasHeightForWidth())
        self.dial.setSizePolicy(sizePolicy4)
        self.dial.setFont(font3)
        self.dial.setCursor(QCursor(Qt.SizeHorCursor))
        self.dial.setToolTipDuration(2)
        self.dial.setStyleSheet(u"background-color: rgb(0, 255, 255);\n"
"color: rgb(255, 0, 127);\n"
"gridline-color: rgb(255, 0, 0);\n"
"selection-background-color: rgb(12, 255, 0);\n"
"\n"
"image: url(:/res/ui/guiscrcpy_logo.png);")
        self.dial.setMinimum(64)
        self.dial.setMaximum(16000)
        self.dial.setSingleStep(2)
        self.dial.setValue(8000)
        self.dial.setOrientation(Qt.Horizontal)
        self.dial.setInvertedAppearance(False)
        self.dial.setInvertedControls(False)
        self.dial.setWrapping(False)
        self.dial.setNotchTarget(20.000000000000000)
        self.dial.setNotchesVisible(True)

        self.gridLayout_3.addWidget(self.dial, 0, 0, 4, 1)

        self.label_2 = QLabel(self.frame)
        self.label_2.setObjectName(u"label_2")

        self.gridLayout_3.addWidget(self.label_2, 0, 5, 1, 1)

        self.dimensionSlider = QSlider(self.frame)
        self.dimensionSlider.setObjectName(u"dimensionSlider")
        self.dimensionSlider.setEnabled(False)
        sizePolicy2.setHeightForWidth(self.dimensionSlider.sizePolicy().hasHeightForWidth())
        self.dimensionSlider.setSizePolicy(sizePolicy2)
        self.dimensionSlider.setStyleSheet(u"color: rgb(255, 255, 255);")
        self.dimensionSlider.setMinimum(320)
        self.dimensionSlider.setMaximum(2048)
        self.dimensionSlider.setValue(1280)
        self.dimensionSlider.setOrientation(Qt.Horizontal)

        self.gridLayout_3.addWidget(self.dimensionSlider, 3, 2, 1, 4)

        self.dimensionText = QLineEdit(self.frame)
        self.dimensionText.setObjectName(u"dimensionText")
        sizePolicy2.setHeightForWidth(self.dimensionText.sizePolicy().hasHeightForWidth())
        self.dimensionText.setSizePolicy(sizePolicy2)
        self.dimensionText.setFont(font6)
        self.dimensionText.setStyleSheet(u"color: rgb(255, 255, 255);\n"
"background-color: rgb(17, 17, 17);\n"
"border-radius: 10px;\n"
"")
        self.dimensionText.setMaxLength(32767)
        self.dimensionText.setAlignment(Qt.AlignCenter)

        self.gridLayout_3.addWidget(self.dimensionText, 2, 3, 1, 3)


        self.verticalLayout.addLayout(self.gridLayout_3)

        self.flaglineedit = QLineEdit(self.frame)
        self.flaglineedit.setObjectName(u"flaglineedit")
        sizePolicy5 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
        sizePolicy5.setHorizontalStretch(0)
        sizePolicy5.setVerticalStretch(0)
        sizePolicy5.setHeightForWidth(self.flaglineedit.sizePolicy().hasHeightForWidth())
        self.flaglineedit.setSizePolicy(sizePolicy5)
        font7 = QFont()
        font7.setFamily(u"Monospace")
        self.flaglineedit.setFont(font7)

        self.verticalLayout.addWidget(self.flaglineedit)

        self.horizontalLayout = QHBoxLayout()
        self.horizontalLayout.setSpacing(5)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.quit = QPushButton(self.frame)
        self.quit.setObjectName(u"quit")
        sizePolicy6 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)
        sizePolicy6.setHorizontalStretch(0)
        sizePolicy6.setVerticalStretch(0)
        sizePolicy6.setHeightForWidth(self.quit.sizePolicy().hasHeightForWidth())
        self.quit.setSizePolicy(sizePolicy6)
        self.quit.setMinimumSize(QSize(45, 45))
        self.quit.setToolTipDuration(2)
        self.quit.setStyleSheet(u"")
        icon14 = QIcon()
        icon14.addFile(u":/icons/icons/cross-mark-on-a-black-circle-background.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.quit.setIcon(icon14)

        self.horizontalLayout.addWidget(self.quit)

        self.pushButton = QPushButton(self.frame)
        self.pushButton.setObjectName(u"pushButton")
        sizePolicy7 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
        sizePolicy7.setHorizontalStretch(0)
        sizePolicy7.setVerticalStretch(0)
        sizePolicy7.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
        self.pushButton.setSizePolicy(sizePolicy7)
        self.pushButton.setMinimumSize(QSize(45, 45))
        font8 = QFont()
        font8.setFamily(u"Titillium Web")
        font8.setPointSize(11)
        font8.setBold(True)
        font8.setWeight(75)
        self.pushButton.setFont(font8)
        self.pushButton.setToolTipDuration(2)

        self.horizontalLayout.addWidget(self.pushButton)

        self.abtgit = QPushButton(self.frame)
        self.abtgit.setObjectName(u"abtgit")
        sizePolicy8 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        sizePolicy8.setHorizontalStretch(0)
        sizePolicy8.setVerticalStretch(0)
        sizePolicy8.setHeightForWidth(self.abtgit.sizePolicy().hasHeightForWidth())
        self.abtgit.setSizePolicy(sizePolicy8)
        self.abtgit.setMinimumSize(QSize(45, 45))
        icon15 = QIcon()
        icon15.addFile(u":/icons/icons/github.logo.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.abtgit.setIcon(icon15)
        self.abtgit.setIconSize(QSize(20, 20))

        self.horizontalLayout.addWidget(self.abtgit)

        self.usbaud = QPushButton(self.frame)
        self.usbaud.setObjectName(u"usbaud")
        sizePolicy9 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        sizePolicy9.setHorizontalStretch(11)
        sizePolicy9.setVerticalStretch(0)
        sizePolicy9.setHeightForWidth(self.usbaud.sizePolicy().hasHeightForWidth())
        self.usbaud.setSizePolicy(sizePolicy9)
        self.usbaud.setMinimumSize(QSize(45, 45))
        icon16 = QIcon()
        icon16.addFile(u":/icons/icons/volume-up-interface-symbol.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.usbaud.setIcon(icon16)

        self.horizontalLayout.addWidget(self.usbaud)

        self.initmapnow = QPushButton(self.frame)
        self.initmapnow.setObjectName(u"initmapnow")
        sizePolicy9.setHeightForWidth(self.initmapnow.sizePolicy().hasHeightForWidth())
        self.initmapnow.setSizePolicy(sizePolicy9)
        self.initmapnow.setMinimumSize(QSize(45, 45))
        self.initmapnow.setToolTipDuration(3)
        icon17 = QIcon()
        icon17.addFile(u":/icons/icons/mapper_init.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.initmapnow.setIcon(icon17)
        self.initmapnow.setIconSize(QSize(40, 40))

        self.horizontalLayout.addWidget(self.initmapnow)

        self.executeaction = QPushButton(self.frame)
        self.executeaction.setObjectName(u"executeaction")
        sizePolicy5.setHeightForWidth(self.executeaction.sizePolicy().hasHeightForWidth())
        self.executeaction.setSizePolicy(sizePolicy5)
        self.executeaction.setMinimumSize(QSize(45, 45))
        font9 = QFont()
        font9.setFamily(u"Titillium Web")
        font9.setPointSize(11)
        font9.setBold(True)
        font9.setItalic(False)
        font9.setWeight(75)
        self.executeaction.setFont(font9)
        self.executeaction.setStyleSheet(u"")
        icon18 = QIcon()
        icon18.addFile(u":/icons/icons/small-rocket-ship-silhouette.svg", QSize(), QIcon.Normal, QIcon.Off)
        self.executeaction.setIcon(icon18)
        self.executeaction.setIconSize(QSize(20, 16))

        self.horizontalLayout.addWidget(self.executeaction)


        self.verticalLayout.addLayout(self.horizontalLayout)

        self.progressBar = QProgressBar(self.frame)
        self.progressBar.setObjectName(u"progressBar")
        palette = QPalette()
        brush = QBrush(QColor(255, 255, 255, 255))
        brush.setStyle(Qt.SolidPattern)
        palette.setBrush(QPalette.Active, QPalette.WindowText, brush)
        gradient = QLinearGradient(0, 0, 1, 0)
        gradient.setSpread(QGradient.PadSpread)
        gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient.setColorAt(0, QColor(0, 255, 255, 255))
        gradient.setColorAt(1, QColor(0, 255, 0, 255))
        brush1 = QBrush(gradient)
        palette.setBrush(QPalette.Active, QPalette.Button, brush1)
        palette.setBrush(QPalette.Active, QPalette.Text, brush)
        palette.setBrush(QPalette.Active, QPalette.ButtonText, brush)
        gradient1 = QLinearGradient(0, 0, 1, 0)
        gradient1.setSpread(QGradient.PadSpread)
        gradient1.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient1.setColorAt(0, QColor(0, 255, 255, 255))
        gradient1.setColorAt(1, QColor(0, 255, 0, 255))
        brush2 = QBrush(gradient1)
        palette.setBrush(QPalette.Active, QPalette.Base, brush2)
        gradient2 = QLinearGradient(0, 0, 1, 0)
        gradient2.setSpread(QGradient.PadSpread)
        gradient2.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient2.setColorAt(0, QColor(0, 255, 255, 255))
        gradient2.setColorAt(1, QColor(0, 255, 0, 255))
        brush3 = QBrush(gradient2)
        palette.setBrush(QPalette.Active, QPalette.Window, brush3)
        brush4 = QBrush(QColor(85, 255, 0, 255))
        brush4.setStyle(Qt.SolidPattern)
        palette.setBrush(QPalette.Active, QPalette.Highlight, brush4)
        palette.setBrush(QPalette.Active, QPalette.HighlightedText, brush)
        brush5 = QBrush(QColor(255, 255, 255, 128))
        brush5.setStyle(Qt.NoBrush)
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
        palette.setBrush(QPalette.Active, QPalette.PlaceholderText, brush5)
#endif
        palette.setBrush(QPalette.Inactive, QPalette.WindowText, brush)
        gradient3 = QLinearGradient(0, 0, 1, 0)
        gradient3.setSpread(QGradient.PadSpread)
        gradient3.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient3.setColorAt(0, QColor(0, 255, 255, 255))
        gradient3.setColorAt(1, QColor(0, 255, 0, 255))
        brush6 = QBrush(gradient3)
        palette.setBrush(QPalette.Inactive, QPalette.Button, brush6)
        palette.setBrush(QPalette.Inactive, QPalette.Text, brush)
        palette.setBrush(QPalette.Inactive, QPalette.ButtonText, brush)
        gradient4 = QLinearGradient(0, 0, 1, 0)
        gradient4.setSpread(QGradient.PadSpread)
        gradient4.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient4.setColorAt(0, QColor(0, 255, 255, 255))
        gradient4.setColorAt(1, QColor(0, 255, 0, 255))
        brush7 = QBrush(gradient4)
        palette.setBrush(QPalette.Inactive, QPalette.Base, brush7)
        gradient5 = QLinearGradient(0, 0, 1, 0)
        gradient5.setSpread(QGradient.PadSpread)
        gradient5.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient5.setColorAt(0, QColor(0, 255, 255, 255))
        gradient5.setColorAt(1, QColor(0, 255, 0, 255))
        brush8 = QBrush(gradient5)
        palette.setBrush(QPalette.Inactive, QPalette.Window, brush8)
        palette.setBrush(QPalette.Inactive, QPalette.Highlight, brush4)
        palette.setBrush(QPalette.Inactive, QPalette.HighlightedText, brush)
        brush9 = QBrush(QColor(255, 255, 255, 128))
        brush9.setStyle(Qt.NoBrush)
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
        palette.setBrush(QPalette.Inactive, QPalette.PlaceholderText, brush9)
#endif
        palette.setBrush(QPalette.Disabled, QPalette.WindowText, brush)
        gradient6 = QLinearGradient(0, 0, 1, 0)
        gradient6.setSpread(QGradient.PadSpread)
        gradient6.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient6.setColorAt(0, QColor(0, 255, 255, 255))
        gradient6.setColorAt(1, QColor(0, 255, 0, 255))
        brush10 = QBrush(gradient6)
        palette.setBrush(QPalette.Disabled, QPalette.Button, brush10)
        palette.setBrush(QPalette.Disabled, QPalette.Text, brush)
        palette.setBrush(QPalette.Disabled, QPalette.ButtonText, brush)
        gradient7 = QLinearGradient(0, 0, 1, 0)
        gradient7.setSpread(QGradient.PadSpread)
        gradient7.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient7.setColorAt(0, QColor(0, 255, 255, 255))
        gradient7.setColorAt(1, QColor(0, 255, 0, 255))
        brush11 = QBrush(gradient7)
        palette.setBrush(QPalette.Disabled, QPalette.Base, brush11)
        gradient8 = QLinearGradient(0, 0, 1, 0)
        gradient8.setSpread(QGradient.PadSpread)
        gradient8.setCoordinateMode(QGradient.ObjectBoundingMode)
        gradient8.setColorAt(0, QColor(0, 255, 255, 255))
        gradient8.setColorAt(1, QColor(0, 255, 0, 255))
        brush12 = QBrush(gradient8)
        palette.setBrush(QPalette.Disabled, QPalette.Window, brush12)
        palette.setBrush(QPalette.Disabled, QPalette.Highlight, brush4)
        palette.setBrush(QPalette.Disabled, QPalette.HighlightedText, brush)
        brush13 = QBrush(QColor(255, 255, 255, 128))
        brush13.setStyle(Qt.NoBrush)
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
        palette.setBrush(QPalette.Disabled, QPalette.PlaceholderText, brush13)
#endif
        self.progressBar.setPalette(palette)
        self.progressBar.setFont(font)
        self.progressBar.setStyleSheet(u"")
        self.progressBar.setValue(100)

        self.verticalLayout.addWidget(self.progressBar)


        self.gridLayout_5.addWidget(self.frame, 1, 0, 1, 1)

        self.frame1 = QFrame(self.centralwidget)
        self.frame1.setObjectName(u"frame1")
        self.horizontalLayout_2 = QHBoxLayout(self.frame1)
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.horizontalLayout_2.setSizeConstraint(QLayout.SetMaximumSize)
        self.label_4 = QLabel(self.frame1)
        self.label_4.setObjectName(u"label_4")
        sizePolicy10 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
        sizePolicy10.setHorizontalStretch(0)
        sizePolicy10.setVerticalStretch(0)
        sizePolicy10.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
        self.label_4.setSizePolicy(sizePolicy10)
        self.label_4.setMinimumSize(QSize(60, 60))
        self.label_4.setMaximumSize(QSize(60, 60))
        self.label_4.setPixmap(QPixmap(u":/res/ui/guiscrcpy_logo.png"))
        self.label_4.setScaledContents(True)

        self.horizontalLayout_2.addWidget(self.label_4)

        self.verticalLayout_2 = QVBoxLayout()
        self.verticalLayout_2.setSpacing(0)
        self.verticalLayout_2.setObjectName(u"verticalLayout_2")
        self.verticalLayout_2.setSizeConstraint(QLayout.SetMaximumSize)
        self.label_3 = QLabel(self.frame1)
        self.label_3.setObjectName(u"label_3")
        sizePolicy8.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy8)
        font10 = QFont()
        font10.setFamily(u"Titillium Web")
        font10.setPointSize(28)
        font10.setBold(True)
        font10.setItalic(False)
        font10.setWeight(75)
        self.label_3.setFont(font10)
        self.label_3.setStyleSheet(u"")

        self.verticalLayout_2.addWidget(self.label_3)

        self.build_label = QLabel(self.frame1)
        self.build_label.setObjectName(u"build_label")
        sizePolicy5.setHeightForWidth(self.build_label.sizePolicy().hasHeightForWidth())
        self.build_label.setSizePolicy(sizePolicy5)
        font11 = QFont()
        font11.setFamily(u"Noto Sans")
        self.build_label.setFont(font11)
        self.build_label.setStyleSheet(u"color: rgb(255, 255, 255);")

        self.verticalLayout_2.addWidget(self.build_label)


        self.horizontalLayout_2.addLayout(self.verticalLayout_2)


        self.gridLayout_5.addWidget(self.frame1, 0, 0, 1, 1)

        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        self.statusbar.setFont(font)
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
Beispiel #7
0
    def __init__(self, model):
        super().__init__()

        self.setWindowTitle("OpenHRV")
        self.setWindowIcon(QIcon(":/logo.png"))
        self.setGeometry(50, 50, 1750, 850)

        self.model = model
        self.signals = ViewSignals()

        self.scanner = SensorScanner()
        self.scanner_thread = QThread(self)
        self.scanner.moveToThread(self.scanner_thread)
        self.scanner.mac_update.connect(self.model.set_mac_addresses)

        self.sensor = SensorClient()
        self.sensor_thread = QThread(self)
        self.sensor.moveToThread(self.sensor_thread)
        self.sensor.ibi_update.connect(self.model.set_ibis_buffer)
        self.sensor_thread.started.connect(self.sensor.run)

        self.redis_publisher = RedisPublisher()
        self.redis_publisher_thread = QThread(self)
        self.redis_publisher.moveToThread(self.redis_publisher_thread)
        self.model.ibis_buffer_update.connect(self.redis_publisher.publish)
        self.model.mean_hrv_update.connect(self.redis_publisher.publish)
        self.model.mac_addresses_update.connect(self.redis_publisher.publish)
        self.model.pacer_rate_update.connect(self.redis_publisher.publish)
        self.model.hrv_target_update.connect(self.redis_publisher.publish)
        self.model.biofeedback_update.connect(self.redis_publisher.publish)
        self.signals.annotation.connect(self.redis_publisher.publish)
        self.redis_publisher_thread.started.connect(
            self.redis_publisher.monitor.start)

        self.redis_logger = RedisLogger()
        self.redis_logger_thread = QThread(self)
        self.redis_logger.moveToThread(self.redis_logger_thread)
        self.redis_logger_thread.finished.connect(
            self.redis_logger.save_recording)
        self.redis_logger.recording_status.connect(self.show_recording_status)

        self.ibis_plot = pg.PlotWidget()
        self.ibis_plot.setBackground("w")
        self.ibis_plot.setLabel("left", "Inter-Beat-Interval (msec)",
                                **{"font-size": "25px"})
        self.ibis_plot.setLabel("bottom", "Seconds", **{"font-size": "25px"})
        self.ibis_plot.showGrid(y=True)
        self.ibis_plot.setYRange(300, 1500, padding=0)
        self.ibis_plot.setMouseEnabled(x=False, y=False)

        self.ibis_signal = pg.PlotCurveItem()
        pen = pg.mkPen(color=(0, 191, 255), width=7.5)
        self.ibis_signal.setPen(pen)
        self.ibis_signal.setData(self.model.ibis_seconds,
                                 self.model.ibis_buffer)
        self.ibis_plot.addItem(self.ibis_signal)

        self.mean_hrv_plot = pg.PlotWidget()
        self.mean_hrv_plot.setBackground("w")
        self.mean_hrv_plot.setLabel("left", "HRV (msec)",
                                    **{"font-size": "25px"})
        self.mean_hrv_plot.setLabel("bottom", "Seconds",
                                    **{"font-size": "25px"})
        self.mean_hrv_plot.showGrid(y=True)
        self.mean_hrv_plot.setYRange(0, 600, padding=0)
        self.mean_hrv_plot.setMouseEnabled(x=False, y=False)
        colorgrad = QLinearGradient(0, 0, 0, 1)  # horizontal gradient
        colorgrad.setCoordinateMode(QGradient.ObjectMode)
        colorgrad.setColorAt(0, pg.mkColor("g"))
        colorgrad.setColorAt(.5, pg.mkColor("y"))
        colorgrad.setColorAt(1, pg.mkColor("r"))
        brush = QBrush(colorgrad)
        self.mean_hrv_plot.getViewBox().setBackgroundColor(brush)

        self.mean_hrv_signal = pg.PlotCurveItem()
        pen = pg.mkPen(color="w", width=7.5)
        self.mean_hrv_signal.setPen(pen)
        self.mean_hrv_signal.setData(self.model.mean_hrv_seconds,
                                     self.model.mean_hrv_buffer)
        self.mean_hrv_plot.addItem(self.mean_hrv_signal)

        self.pacer_plot = pg.PlotWidget()
        self.pacer_plot.setBackground("w")
        self.pacer_plot.setAspectLocked(lock=True, ratio=1)
        self.pacer_plot.setMouseEnabled(x=False, y=False)
        self.pacer_plot.disableAutoRange()
        self.pacer_plot.setXRange(-1, 1, padding=0)
        self.pacer_plot.setYRange(-1, 1, padding=0)
        self.pacer_plot.hideAxis("left")
        self.pacer_plot.hideAxis("bottom")

        self.pacer_disc = pg.PlotCurveItem()
        brush = pg.mkBrush(color=(135, 206, 250))
        self.pacer_disc.setBrush(brush)
        self.pacer_disc.setFillLevel(1)
        self.pacer_plot.addItem(self.pacer_disc)

        self.pacer_rate = QSlider(Qt.Horizontal)
        self.pacer_rate.setTracking(False)
        self.pacer_rate.setRange(
            0, 6)  # transformed to bpm [4, 7], step .5 by model
        self.pacer_rate.valueChanged.connect(self.model.set_breathing_rate)
        self.pacer_rate.setSliderPosition(4)  # corresponds to 6 bpm
        self.pacer_label = QLabel(f"Rate: {self.model.breathing_rate}")

        self.pacer_toggle = QCheckBox("Show pacer", self)
        self.pacer_toggle.setChecked(True)
        self.pacer_toggle.stateChanged.connect(self.toggle_pacer)

        self.hrv_target_label = QLabel(f"Target: {self.model.hrv_target}")

        self.hrv_target = QSlider(Qt.Horizontal)
        self.hrv_target.setRange(50, 600)
        self.hrv_target.setSingleStep(10)
        self.hrv_target.valueChanged.connect(self.model.set_hrv_target)
        self.hrv_target.setSliderPosition(self.model.hrv_target)
        self.mean_hrv_plot.setYRange(0, self.model.hrv_target, padding=0)

        self.scan_button = QPushButton("Scan")
        self.scan_button.clicked.connect(self.scanner.scan)

        self.mac_menu = QComboBox()

        self.connect_button = QPushButton("Connect")
        self.connect_button.clicked.connect(self.connect_sensor)

        self.start_recording_button = QPushButton("Start")
        self.start_recording_button.clicked.connect(
            self.redis_logger.start_recording)

        self.save_recording_button = QPushButton("Save")
        self.save_recording_button.clicked.connect(
            self.redis_logger.save_recording)

        self.annotation = QComboBox()
        self.annotation.setEditable(True)
        self.annotation.setDuplicatesEnabled(False)
        self.annotation.addItems([
            "start_baseline", "end_baseline", "start_bf", "end_bf",
            "start_nobf", "end_nobf"
        ])
        self.annotation.setMaxCount(
            10)  # user can configure up to 4 additional custom annotations
        self.annotation_button = QPushButton("Annotate")
        self.annotation_button.clicked.connect(self.emit_annotation)
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        self.recording_status_label = QLabel("Status:")
        self.recording_statusbar = QProgressBar()
        self.recording_statusbar.setRange(0, 1)

        self.vlayout0 = QVBoxLayout(self.central_widget)

        self.hlayout0 = QHBoxLayout()
        self.hlayout0.addWidget(self.ibis_plot, stretch=80)
        self.hlayout0.addWidget(self.pacer_plot, stretch=20)
        self.vlayout0.addLayout(self.hlayout0)

        self.vlayout0.addWidget(self.mean_hrv_plot)

        self.hlayout1 = QHBoxLayout()

        self.device_config = QFormLayout()
        self.device_config.addRow(self.scan_button, self.mac_menu)
        self.device_config.addRow(self.connect_button)
        self.device_panel = QGroupBox("ECG Devices")
        self.device_panel.setLayout(self.device_config)
        self.hlayout1.addWidget(self.device_panel, stretch=25)

        self.hrv_config = QFormLayout()
        self.hrv_config.addRow(self.hrv_target_label, self.hrv_target)
        self.hrv_panel = QGroupBox("HRV Settings")
        self.hrv_panel.setLayout(self.hrv_config)
        self.hlayout1.addWidget(self.hrv_panel, stretch=25)

        self.pacer_config = QFormLayout()
        self.pacer_config.addRow(self.pacer_label, self.pacer_rate)
        self.pacer_config.addRow(self.pacer_toggle)
        self.pacer_panel = QGroupBox("Breathing Pacer")
        self.pacer_panel.setLayout(self.pacer_config)
        self.hlayout1.addWidget(self.pacer_panel, stretch=25)

        self.recording_config = QGridLayout()
        self.recording_config.addWidget(self.start_recording_button, 0, 0)
        self.recording_config.addWidget(self.save_recording_button, 0, 1)
        self.recording_config.addWidget(self.recording_statusbar, 0, 2)
        self.recording_config.addWidget(self.annotation, 1, 0, 1,
                                        2)  # row, column, rowspan, columnspan
        self.recording_config.addWidget(self.annotation_button, 1, 2)

        self.recording_panel = QGroupBox("Recording")
        self.recording_panel.setLayout(self.recording_config)
        self.hlayout1.addWidget(self.recording_panel, stretch=25)

        self.vlayout0.addLayout(self.hlayout1)

        self.model.ibis_buffer_update.connect(self.plot_ibis)
        self.model.mean_hrv_update.connect(self.plot_hrv)
        self.model.mac_addresses_update.connect(self.list_macs)
        self.model.pacer_disk_update.connect(self.plot_pacer_disk)
        self.model.pacer_rate_update.connect(self.update_pacer_label)
        self.model.hrv_target_update.connect(self.update_hrv_target)

        self.scanner_thread.start()
        self.sensor_thread.start()
        self.redis_publisher_thread.start()
        self.redis_logger_thread.start()
    def __init__(self):
        super(AntaresLauncherScene, self).__init__()

        # ################## DATA PART ##################
        self.simulations = []

        # ################## INIT SCENE ##################
        # self.setBackgroundBrush(Qt.black)

        qgradient = QLinearGradient()
        qgradient.setCoordinateMode(QGradient.ObjectBoundingMode)
        # qgradient.setColorAt(0.2, QColor("#180d28"))
        # qgradient.setColorAt(1.0, QColor("#001029"))
        qgradient.setColorAt(0.2, QColor("#001029"))
        qgradient.setColorAt(1.0, QColor("#180d28"))

        # self.setBackgroundBrush(QColor(17, 36, 71))
        # self.setBackgroundBrush(QColor("#180d28"))
        self.setBackgroundBrush(qgradient)
        self.setSceneRect(0, 0, 2000, 2000)
        # self.x = -720
        # self.y = -405
        # self.width = 1440
        # self.height = 810
        # self.setSceneRect(-720, -405, 1440, 810)
        # self.setSceneRect(0, 0, 1440, 810)

        # don't understand why its not exactly 0,0 ton top left corner, if you print scene:mousePressEvent()scene.Pos()
        # if SceneRect.width is < than width of Window, then the scene grows de part et d'autre
        # |win  <-- |scene| --> win |
        # |-5.0  <-- |0, 1400| --> 1405 |
        # self.setSceneRect(0.0, 0.0, 1440, 810)

        # self.addItem(Circle(QPoint(10, 10)))

        # axis = scene_objects.init_visual_scene_axis()
        # for ax in axis:
        #     self.addItem(ax)
        #     print(f"object {ax} has been added to the scene")

        # ####################################################
        simulations = ["BP_2019", "BP_2020", "BP_2021"]
        positions = [(-400, 100), (-400, 300), (-400, -100)]

        # select_folder = SelectFolderButton(0, 0, 300, 75, "Select Folder")
        # select_folder = SelectFolderButton(608, 50, 300, 75, "Select Folder")
        select_folder = SelectFolderButton(1150, 55, 300, 75, "Select Folder")
        self.addItem(select_folder)
        launch_button = LaunchButton(1150, 355, 300, 75, "Launch...")
        self.addItem(launch_button)

        # Text display for currentFolderDisplay

        # str representing the current_dir
        self.current_dir = None
        self.current_dir_display = CurrentFolderDisplay(50, 30, 750, 40,
                                                        f" Simulations loaded from folder : {self.current_dir}")
        self.addItem(self.current_dir_display)
        select_folder.speak.connect(self.current_dir_display.on_update)

        select_folder.speak.connect(self.init_all_simus_blocks)

        self.latest_load_display = LatestLoadDisplay(50, 100, 400, 30, " None")
        self.addItem(self.latest_load_display)
        select_folder.speak.connect(self.latest_load_display.on_update)

        self.latest_sync_display = None
Beispiel #9
0
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(1113, 802)
        sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        font = QFont()
        font.setFamily(u"Microsoft YaHei UI")
        font.setPointSize(9)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        MainWindow.setFont(font)
        self.actionYea = QAction(MainWindow)
        self.actionYea.setObjectName(u"actionYea")
        self.actiond = QAction(MainWindow)
        self.actiond.setObjectName(u"actiond")
        self.actionda = QAction(MainWindow)
        self.actionda.setObjectName(u"actionda")
        self.action132 = QAction(MainWindow)
        self.action132.setObjectName(u"action132")
        self.action654 = QAction(MainWindow)
        self.action654.setObjectName(u"action654")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.formLayout = QFormLayout(self.centralwidget)
        self.formLayout.setObjectName(u"formLayout")
        self.verticalLayout_2 = QVBoxLayout()
        self.verticalLayout_2.setObjectName(u"verticalLayout_2")
        self.horizontalLayout = QHBoxLayout()
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")
        font1 = QFont()
        font1.setFamily(u"\u817e\u8baf\u4f53")
        font1.setPointSize(13)
        font1.setBold(False)
        font1.setItalic(False)
        font1.setWeight(50)
        self.label.setFont(font1)

        self.horizontalLayout.addWidget(self.label)

        self.Download = QPushButton(self.centralwidget)
        self.Download.setObjectName(u"Download")
        self.Download.setEnabled(True)
        self.Download.setMaximumSize(QSize(500, 16777215))
        font2 = QFont()
        font2.setFamily(u"Microsoft YaHei UI")
        font2.setPointSize(12)
        font2.setBold(False)
        font2.setItalic(False)
        font2.setWeight(50)
        self.Download.setFont(font2)

        self.horizontalLayout.addWidget(self.Download)

        self.verticalLayout_2.addLayout(self.horizontalLayout)

        self.tableWidget = QTableWidget(self.centralwidget)
        if (self.tableWidget.columnCount() < 2):
            self.tableWidget.setColumnCount(2)
        __qtablewidgetitem = QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, __qtablewidgetitem)
        __qtablewidgetitem1 = QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, __qtablewidgetitem1)
        self.tableWidget.setObjectName(u"tableWidget")

        self.verticalLayout_2.addWidget(self.tableWidget)

        self.lineEdit_2 = QLineEdit(self.centralwidget)
        self.lineEdit_2.setObjectName(u"lineEdit_2")

        self.verticalLayout_2.addWidget(self.lineEdit_2)

        self.select1 = QPushButton(self.centralwidget)
        self.select1.setObjectName(u"select1")
        font3 = QFont()
        font3.setFamily(u"\u963f\u91cc\u5df4\u5df4\u666e\u60e0\u4f53 B")
        font3.setPointSize(12)
        font3.setBold(True)
        font3.setItalic(False)
        font3.setWeight(75)
        self.select1.setFont(font3)

        self.verticalLayout_2.addWidget(self.select1)

        self.GetData = QPushButton(self.centralwidget)
        self.GetData.setObjectName(u"GetData")
        self.GetData.setFont(font3)
        self.GetData.setStyleSheet(u"color: rgb(255, 112, 29);\n" "\n" "")
        self.GetData.setAutoRepeat(False)

        self.verticalLayout_2.addWidget(self.GetData)

        self.formLayout.setLayout(0, QFormLayout.LabelRole,
                                  self.verticalLayout_2)

        self.verticalLayout_9 = QVBoxLayout()
        self.verticalLayout_9.setObjectName(u"verticalLayout_9")
        self.groupBox = QGroupBox(self.centralwidget)
        self.groupBox.setObjectName(u"groupBox")
        palette = QPalette()
        brush = QBrush(QColor(197, 0, 0, 255))
        brush.setStyle(Qt.SolidPattern)
        palette.setBrush(QPalette.Active, QPalette.WindowText, brush)
        palette.setBrush(QPalette.Inactive, QPalette.WindowText, brush)
        brush1 = QBrush(QColor(120, 120, 120, 255))
        brush1.setStyle(Qt.SolidPattern)
        palette.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
        self.groupBox.setPalette(palette)
        font4 = QFont()
        font4.setFamily(u"Microsoft YaHei UI")
        font4.setPointSize(12)
        self.groupBox.setFont(font4)
        self.groupBox.setStyleSheet(u"")
        self.verticalLayout_7 = QVBoxLayout(self.groupBox)
        self.verticalLayout_7.setObjectName(u"verticalLayout_7")
        self.horizontalLayout_8 = QHBoxLayout()
        self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
        self.horizontalLayout_8.setContentsMargins(-1, 15, -1, -1)
        self.select2 = QPushButton(self.groupBox)
        self.select2.setObjectName(u"select2")
        sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
        sizePolicy1.setHorizontalStretch(0)
        sizePolicy1.setVerticalStretch(0)
        sizePolicy1.setHeightForWidth(
            self.select2.sizePolicy().hasHeightForWidth())
        self.select2.setSizePolicy(sizePolicy1)
        font5 = QFont()
        font5.setFamily(u"Microsoft YaHei UI")
        font5.setPointSize(10)
        font5.setBold(True)
        font5.setItalic(False)
        font5.setWeight(75)
        self.select2.setFont(font5)
        self.select2.setCheckable(False)

        self.horizontalLayout_8.addWidget(self.select2)

        self.horizontalSpacer = QSpacerItem(60, 20, QSizePolicy.Expanding,
                                            QSizePolicy.Minimum)

        self.horizontalLayout_8.addItem(self.horizontalSpacer)

        self.comboBox = QComboBox(self.groupBox)
        self.comboBox.setObjectName(u"comboBox")
        sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
        sizePolicy2.setHorizontalStretch(1)
        sizePolicy2.setVerticalStretch(5)
        sizePolicy2.setHeightForWidth(
            self.comboBox.sizePolicy().hasHeightForWidth())
        self.comboBox.setSizePolicy(sizePolicy2)

        self.horizontalLayout_8.addWidget(self.comboBox)

        self.verticalLayout_7.addLayout(self.horizontalLayout_8)

        self.horizontalLayout_2 = QHBoxLayout()
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.horizontalLayout_2.setContentsMargins(-1, 10, -1, -1)
        self.label_2 = QLabel(self.groupBox)
        self.label_2.setObjectName(u"label_2")
        font6 = QFont()
        font6.setFamily(u"Microsoft YaHei UI")
        font6.setPointSize(10)
        self.label_2.setFont(font6)
        self.label_2.setStyleSheet(u"color: rgb(0, 0, 195);")

        self.horizontalLayout_2.addWidget(self.label_2)

        self.number = QLineEdit(self.groupBox)
        self.number.setObjectName(u"number")
        font7 = QFont()
        font7.setFamily(u"Microsoft YaHei UI")
        font7.setPointSize(9)
        self.number.setFont(font7)

        self.horizontalLayout_2.addWidget(self.number)

        self.label_5 = QLabel(self.groupBox)
        self.label_5.setObjectName(u"label_5")
        palette1 = QPalette()
        brush2 = QBrush(QColor(0, 0, 0, 255))
        brush2.setStyle(Qt.SolidPattern)
        palette1.setBrush(QPalette.Active, QPalette.WindowText, brush2)
        palette1.setBrush(QPalette.Inactive, QPalette.WindowText, brush2)
        palette1.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
        self.label_5.setPalette(palette1)
        self.label_5.setFont(font6)

        self.horizontalLayout_2.addWidget(self.label_5)

        self.charsplit = QLineEdit(self.groupBox)
        self.charsplit.setObjectName(u"charsplit")
        self.charsplit.setFont(font7)

        self.horizontalLayout_2.addWidget(self.charsplit)

        self.verticalLayout_7.addLayout(self.horizontalLayout_2)

        self.horizontalLayout_3 = QHBoxLayout()
        self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
        self.horizontalLayout_3.setContentsMargins(-1, 10, -1, -1)
        self.label_4 = QLabel(self.groupBox)
        self.label_4.setObjectName(u"label_4")
        palette2 = QPalette()
        palette2.setBrush(QPalette.Active, QPalette.WindowText, brush2)
        palette2.setBrush(QPalette.Inactive, QPalette.WindowText, brush2)
        palette2.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
        self.label_4.setPalette(palette2)
        self.label_4.setFont(font6)

        self.horizontalLayout_3.addWidget(self.label_4)

        self.FileNames = QLineEdit(self.groupBox)
        self.FileNames.setObjectName(u"FileNames")
        self.FileNames.setFont(font7)

        self.horizontalLayout_3.addWidget(self.FileNames)

        self.label_6 = QLabel(self.groupBox)
        self.label_6.setObjectName(u"label_6")
        palette3 = QPalette()
        palette3.setBrush(QPalette.Active, QPalette.WindowText, brush2)
        palette3.setBrush(QPalette.Inactive, QPalette.WindowText, brush2)
        palette3.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
        self.label_6.setPalette(palette3)
        self.label_6.setFont(font6)

        self.horizontalLayout_3.addWidget(self.label_6)

        self.ClassName = QLineEdit(self.groupBox)
        self.ClassName.setObjectName(u"ClassName")
        self.ClassName.setFont(font7)

        self.horizontalLayout_3.addWidget(self.ClassName)

        self.verticalLayout_7.addLayout(self.horizontalLayout_3)

        self.horizontalLayout_4 = QHBoxLayout()
        self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
        self.horizontalLayout_4.setContentsMargins(-1, 10, -1, -1)
        self.label_7 = QLabel(self.groupBox)
        self.label_7.setObjectName(u"label_7")
        palette4 = QPalette()
        palette4.setBrush(QPalette.Active, QPalette.WindowText, brush2)
        palette4.setBrush(QPalette.Inactive, QPalette.WindowText, brush2)
        palette4.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
        self.label_7.setPalette(palette4)
        self.label_7.setFont(font6)

        self.horizontalLayout_4.addWidget(self.label_7)

        self.btn_delete = QPushButton(self.groupBox)
        self.btn_delete.setObjectName(u"btn_delete")
        sizePolicy3 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        sizePolicy3.setHorizontalStretch(0)
        sizePolicy3.setVerticalStretch(0)
        sizePolicy3.setHeightForWidth(
            self.btn_delete.sizePolicy().hasHeightForWidth())
        self.btn_delete.setSizePolicy(sizePolicy3)
        self.btn_delete.setMaximumSize(QSize(40, 16777215))
        font8 = QFont()
        font8.setFamily(u"Microsoft YaHei UI")
        font8.setPointSize(11)
        font8.setBold(True)
        font8.setWeight(75)
        self.btn_delete.setFont(font8)
        self.btn_delete.setStyleSheet(u"")

        self.horizontalLayout_4.addWidget(self.btn_delete)

        self.comboBox_2 = QComboBox(self.groupBox)
        self.comboBox_2.setObjectName(u"comboBox_2")
        palette5 = QPalette()
        brush3 = QBrush(QColor(0, 0, 195, 255))
        brush3.setStyle(Qt.SolidPattern)
        palette5.setBrush(QPalette.Active, QPalette.WindowText, brush3)
        palette5.setBrush(QPalette.Active, QPalette.Text, brush3)
        palette5.setBrush(QPalette.Active, QPalette.ButtonText, brush3)
        brush4 = QBrush(QColor(0, 0, 195, 128))
        brush4.setStyle(Qt.NoBrush)
        #if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
        palette5.setBrush(QPalette.Active, QPalette.PlaceholderText, brush4)
        #endif
        palette5.setBrush(QPalette.Inactive, QPalette.WindowText, brush3)
        palette5.setBrush(QPalette.Inactive, QPalette.Text, brush3)
        palette5.setBrush(QPalette.Inactive, QPalette.ButtonText, brush3)
        brush5 = QBrush(QColor(0, 0, 195, 128))
        brush5.setStyle(Qt.NoBrush)
        #if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
        palette5.setBrush(QPalette.Inactive, QPalette.PlaceholderText, brush5)
        #endif
        palette5.setBrush(QPalette.Disabled, QPalette.WindowText, brush3)
        palette5.setBrush(QPalette.Disabled, QPalette.Text, brush3)
        palette5.setBrush(QPalette.Disabled, QPalette.ButtonText, brush3)
        brush6 = QBrush(QColor(0, 0, 195, 128))
        brush6.setStyle(Qt.NoBrush)
        #if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
        palette5.setBrush(QPalette.Disabled, QPalette.PlaceholderText, brush6)
        #endif
        self.comboBox_2.setPalette(palette5)
        font9 = QFont()
        font9.setFamily(u"Microsoft YaHei UI")
        font9.setPointSize(11)
        self.comboBox_2.setFont(font9)
        self.comboBox_2.setStyleSheet(u"color: rgb(0, 0, 195);")

        self.horizontalLayout_4.addWidget(self.comboBox_2)

        self.verticalLayout_7.addLayout(self.horizontalLayout_4)

        self.verticalLayout_3 = QVBoxLayout()
        self.verticalLayout_3.setObjectName(u"verticalLayout_3")
        self.horizontalLayout_12 = QHBoxLayout()
        self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
        self.horizontalLayout_12.setContentsMargins(-1, 10, -1, 10)
        self.radioButton = QRadioButton(self.groupBox)
        self.radioButton.setObjectName(u"radioButton")
        sizePolicy3.setHeightForWidth(
            self.radioButton.sizePolicy().hasHeightForWidth())
        self.radioButton.setSizePolicy(sizePolicy3)
        self.radioButton.setFont(font8)
        self.radioButton.setStyleSheet(u"color: rgb(255, 2, 2);")

        self.horizontalLayout_12.addWidget(self.radioButton)

        self.verticalLayout_3.addLayout(self.horizontalLayout_12)

        self.horizontalLayout_13 = QHBoxLayout()
        self.horizontalLayout_13.setObjectName(u"horizontalLayout_13")
        self.horizontalLayout_13.setContentsMargins(-1, 0, -1, 20)
        self.Change = QPushButton(self.groupBox)
        self.Change.setObjectName(u"Change")
        sizePolicy4 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        sizePolicy4.setHorizontalStretch(6)
        sizePolicy4.setVerticalStretch(0)
        sizePolicy4.setHeightForWidth(
            self.Change.sizePolicy().hasHeightForWidth())
        self.Change.setSizePolicy(sizePolicy4)
        self.Change.setMinimumSize(QSize(60, 30))
        self.Change.setMaximumSize(QSize(160, 80))
        palette6 = QPalette()
        gradient = QLinearGradient(0, 0, 1, 1)
        gradient.setSpread(QConicalGradient.RepeatSpread)
        gradient.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient.setColorAt(0, QColor(255, 0, 0, 255))
        gradient.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush7 = QBrush(gradient)
        palette6.setBrush(QPalette.Active, QPalette.Button, brush7)
        gradient1 = QLinearGradient(0, 0, 1, 1)
        gradient1.setSpread(QConicalGradient.RepeatSpread)
        gradient1.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient1.setColorAt(0, QColor(255, 0, 0, 255))
        gradient1.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient1.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush8 = QBrush(gradient1)
        palette6.setBrush(QPalette.Active, QPalette.Base, brush8)
        gradient2 = QLinearGradient(0, 0, 1, 1)
        gradient2.setSpread(QConicalGradient.RepeatSpread)
        gradient2.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient2.setColorAt(0, QColor(255, 0, 0, 255))
        gradient2.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient2.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush9 = QBrush(gradient2)
        palette6.setBrush(QPalette.Active, QPalette.Window, brush9)
        gradient3 = QLinearGradient(0, 0, 1, 1)
        gradient3.setSpread(QConicalGradient.RepeatSpread)
        gradient3.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient3.setColorAt(0, QColor(255, 0, 0, 255))
        gradient3.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient3.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush10 = QBrush(gradient3)
        palette6.setBrush(QPalette.Inactive, QPalette.Button, brush10)
        gradient4 = QLinearGradient(0, 0, 1, 1)
        gradient4.setSpread(QConicalGradient.RepeatSpread)
        gradient4.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient4.setColorAt(0, QColor(255, 0, 0, 255))
        gradient4.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient4.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush11 = QBrush(gradient4)
        palette6.setBrush(QPalette.Inactive, QPalette.Base, brush11)
        gradient5 = QLinearGradient(0, 0, 1, 1)
        gradient5.setSpread(QConicalGradient.RepeatSpread)
        gradient5.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient5.setColorAt(0, QColor(255, 0, 0, 255))
        gradient5.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient5.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush12 = QBrush(gradient5)
        palette6.setBrush(QPalette.Inactive, QPalette.Window, brush12)
        gradient6 = QLinearGradient(0, 0, 1, 1)
        gradient6.setSpread(QConicalGradient.RepeatSpread)
        gradient6.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient6.setColorAt(0, QColor(255, 0, 0, 255))
        gradient6.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient6.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush13 = QBrush(gradient6)
        palette6.setBrush(QPalette.Disabled, QPalette.Button, brush13)
        gradient7 = QLinearGradient(0, 0, 1, 1)
        gradient7.setSpread(QConicalGradient.RepeatSpread)
        gradient7.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient7.setColorAt(0, QColor(255, 0, 0, 255))
        gradient7.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient7.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush14 = QBrush(gradient7)
        palette6.setBrush(QPalette.Disabled, QPalette.Base, brush14)
        gradient8 = QLinearGradient(0, 0, 1, 1)
        gradient8.setSpread(QConicalGradient.RepeatSpread)
        gradient8.setCoordinateMode(QConicalGradient.ObjectBoundingMode)
        gradient8.setColorAt(0, QColor(255, 0, 0, 255))
        gradient8.setColorAt(0.492537, QColor(255, 170, 170, 255))
        gradient8.setColorAt(0.955224, QColor(255, 0, 0, 255))
        brush15 = QBrush(gradient8)
        palette6.setBrush(QPalette.Disabled, QPalette.Window, brush15)
        self.Change.setPalette(palette6)
        font10 = QFont()
        font10.setFamily(u"\u65b9\u6b63\u59da\u4f53")
        font10.setPointSize(12)
        self.Change.setFont(font10)
        self.Change.setStyleSheet(
            u"\n"
            "background-color: qlineargradient(spread:repeat, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 0, 0, 255), stop:0.492537 rgba(255, 170, 170, 255), stop:0.955224 rgba(255, 0, 0, 255));\n"
            "border-radius:10px\n"
            "")

        self.horizontalLayout_13.addWidget(self.Change)

        self.verticalLayout_3.addLayout(self.horizontalLayout_13)

        self.verticalLayout_7.addLayout(self.verticalLayout_3)

        self.verticalLayout_9.addWidget(self.groupBox)

        self.line_2 = QFrame(self.centralwidget)
        self.line_2.setObjectName(u"line_2")
        self.line_2.setFrameShape(QFrame.HLine)
        self.line_2.setFrameShadow(QFrame.Sunken)

        self.verticalLayout_9.addWidget(self.line_2)

        self.horizontalLayout_5 = QHBoxLayout()
        self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
        self.groupBox_2 = QGroupBox(self.centralwidget)
        self.groupBox_2.setObjectName(u"groupBox_2")
        palette7 = QPalette()
        palette7.setBrush(QPalette.Active, QPalette.WindowText, brush)
        palette7.setBrush(QPalette.Inactive, QPalette.WindowText, brush)
        palette7.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
        self.groupBox_2.setPalette(palette7)
        font11 = QFont()
        font11.setFamily(u"\u9ed1\u4f53")
        font11.setPointSize(9)
        font11.setBold(False)
        font11.setItalic(False)
        font11.setWeight(50)
        self.groupBox_2.setFont(font11)
        self.verticalLayout_4 = QVBoxLayout(self.groupBox_2)
        self.verticalLayout_4.setObjectName(u"verticalLayout_4")
        self.progressBar = QProgressBar(self.groupBox_2)
        self.progressBar.setObjectName(u"progressBar")
        self.progressBar.setFont(font11)
        self.progressBar.setValue(24)

        self.verticalLayout_4.addWidget(self.progressBar)

        self.textBrowser = QTextBrowser(self.groupBox_2)
        self.textBrowser.setObjectName(u"textBrowser")
        self.textBrowser.setStyleSheet(u"\n"
                                       "background-color: rgb(231, 231, 231);")

        self.verticalLayout_4.addWidget(self.textBrowser)

        self.horizontalLayout_5.addWidget(self.groupBox_2)

        self.line = QFrame(self.centralwidget)
        self.line.setObjectName(u"line")
        self.line.setFrameShape(QFrame.VLine)
        self.line.setFrameShadow(QFrame.Sunken)

        self.horizontalLayout_5.addWidget(self.line)

        self.calendarWidget = QCalendarWidget(self.centralwidget)
        self.calendarWidget.setObjectName(u"calendarWidget")
        font12 = QFont()
        font12.setFamily(u"\u65b9\u6b63\u59da\u4f53")
        font12.setPointSize(9)
        font12.setBold(False)
        font12.setItalic(False)
        font12.setWeight(50)
        self.calendarWidget.setFont(font12)
        self.calendarWidget.setStyleSheet(u"")

        self.horizontalLayout_5.addWidget(self.calendarWidget)

        self.verticalLayout_9.addLayout(self.horizontalLayout_5)

        self.formLayout.setLayout(0, QFormLayout.FieldRole,
                                  self.verticalLayout_9)

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 1113, 26))
        self.menu = QMenu(self.menubar)
        self.menu.setObjectName(u"menu")
        self.menu_2 = QMenu(self.menubar)
        self.menu_2.setObjectName(u"menu_2")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.menubar.addAction(self.menu.menuAction())
        self.menubar.addAction(self.menu_2.menuAction())
        self.menu.addAction(self.actionYea)
        self.menu.addSeparator()
        self.menu.addAction(self.action132)
        self.menu.addSeparator()
        self.menu_2.addAction(self.actiond)
        self.menu_2.addAction(self.actionda)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
class GradientWidget(QLabel):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.gradient = QLinearGradient(0, 0, 0, self.height())
        self.labels = {}
        self.margin = 10
        self._barThickness = 20
        self._labelMargin = 2

        self._maxLabelWidth = None
        self._maxLabelHeight = None

        self._orientation = 'Vertical'
        self.setStyleSheet("background-color: rgba(255,0,255,0)")
        self.setAttribute(Qt.WA_NoSystemBackground)

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.HighQualityAntialiasing)

        # determine max width/height of all labels
        if self._maxLabelWidth is None or self._maxLabelHeight is None:
            self._maxLabelWidth = 0
            self._maxLabelHeight = 0
            for k in self.labels.values():
                b = painter.boundingRect(
                    QRectF(0, 0, 0, 0),
                    int(Qt.AlignLeft) | int(Qt.AlignVCenter), str(k))
                self._maxLabelWidth = max(self._maxLabelWidth, b.width())
                self._maxLabelHeight = max(self._maxLabelHeight, b.height())

        barRect = self.rect()

        if self._orientation == 'Vertical':
            # translate Y axis
            matrix = QMatrix()
            matrix.translate(0, self.height() - self.margin)
            matrix.scale(1, -1)
            painter.setMatrix(matrix)

            self.gradient.setFinalStop(0, self.height() - self.margin)
            barRect.setWidth(self._barThickness)
            barRect.setHeight(barRect.height() - 2 * self.margin)
            painter.fillRect(barRect, self.gradient)

            # restore normal coordinates
            painter.scale(1, -1)

            self.setMinimumWidth(self._barThickness + self._labelMargin +
                                 self._maxLabelWidth)

        elif self._orientation == 'Horizontal':
            self.margin = self._maxLabelWidth / 2 + self._labelMargin
            barRect.setHeight(self._barThickness)
            barRect.setLeft(
                self.margin
            )  # reduces width by margin (as opposed to shifting)

            # Reduce the width by another margin to pull off the right hand side
            barRect.setWidth(barRect.width() - self.margin)

            painter.fillRect(barRect, self.gradient)

            line_step = barRect.width() / 20
            pos = barRect.left()
            while pos <= barRect.right():
                painter.drawLine(pos,
                                 2 * (barRect.bottom() - barRect.top()) / 3,
                                 pos, barRect.bottom())
                pos += line_step

            self.setMinimumHeight(self._maxLabelHeight + self._barThickness +
                                  self._labelMargin)

        for pos, label in self.labels.items():
            # Figure coordinate position. 1=height-margin for vertical, or width-margin for horizontal
            if self._orientation == 'Vertical':
                lpos = -1 * ((self.height() - (2 * self.margin)) * pos)
                painter.drawText(self._barThickness + self._labelMargin,
                                 (.5 * self._maxLabelHeight) + lpos, label)
            elif self._orientation == 'Horizontal':
                text_rect = painter.boundingRect(QRectF(0, 0, 0, 0),
                                                 int(Qt.AlignLeft), str(label))
                lpos = ((self.width() - (2 * self.margin)) * pos
                        )  # Center position
                lleft = lpos - text_rect.width() / 2
                painter.drawText(lleft + self.margin, self.height() - 1, label)

    def setGradient(self, g):
        self.gradient = g
        self.gradient.setCoordinateMode(QGradient.ObjectMode)

        # Make sure we go end-to-end
        self.gradient.setFinalStop(1, 0)
        self.gradient.setStart(0, 0)

        self.repaint()

    def setLabels(self, l):
        self.labels = l
        # recalculate self.labelWidth on next paint
        self._maxLabelWidth = None
        self._maxLabelHeight = None
        self.repaint()

    def setOrientation(self, orientation):
        if not orientation in ('Horizontal', 'Vertical'):
            raise TypeError(
                "Orientation must be one of 'Horizontal' or 'Vertical'")

        self._orientation = orientation
        self.repaint()