class ToolbarWidget(QWidget):
    """
    Widget with a button toolbar for a verification button
    """

    # noinspection PyArgumentList
    def __init__(self, gui):
        super(ToolbarWidget, self).__init__()
        self.gui = gui
        self.layout = QHBoxLayout()
        self.setLayout(self.layout)

        # overlay dropdown box
        self.view_label = QLabel("View:")
        self.view_dropdown = QComboBox()
        self.view_dropdown.addItems([
            "Overview", "Info View", "Heatmap - Success", "Heatmap - Waiting",
            "Heatmap - Running", "Heatmap - Failure"
        ])
        # noinspection PyUnresolvedReferences
        self.view_dropdown.currentTextChanged[str].connect(self.switch_views)
        self.layout.addWidget(self.view_label)
        self.layout.addWidget(self.view_dropdown)
        self.layout.addStretch(1)
        # dropdown shortcuts
        self.overview_action = QAction('Overview', self.view_dropdown)
        self.overview_action.triggered.connect(
            lambda: self.view_dropdown.setCurrentIndex(0))
        self.overview_action.setShortcut('F1')
        self.view_dropdown.addAction(self.overview_action)
        self.info_view_action = QAction('Info View', self.view_dropdown)
        self.info_view_action.triggered.connect(
            lambda: self.view_dropdown.setCurrentIndex(1))
        self.info_view_action.setShortcut('F2')
        self.view_dropdown.addAction(self.info_view_action)
        self.heatmap_success_action = QAction('Heatmap - Success',
                                              self.view_dropdown)
        self.heatmap_success_action.triggered.connect(
            lambda: self.view_dropdown.setCurrentIndex(2))
        self.heatmap_success_action.setShortcut('F6')
        self.view_dropdown.addAction(self.heatmap_success_action)
        self.heatmap_waiting_action = QAction('Heatmap - Waiting',
                                              self.view_dropdown)
        self.heatmap_waiting_action.triggered.connect(
            lambda: self.view_dropdown.setCurrentIndex(3))
        self.heatmap_waiting_action.setShortcut('F7')
        self.view_dropdown.addAction(self.heatmap_waiting_action)
        self.heatmap_running_action = QAction('Heatmap - Running',
                                              self.view_dropdown)
        self.heatmap_running_action.triggered.connect(
            lambda: self.view_dropdown.setCurrentIndex(4))
        self.heatmap_running_action.setShortcut('F8')
        self.view_dropdown.addAction(self.heatmap_running_action)
        self.heatmap_failure_action = QAction('Heatmap - Failure',
                                              self.view_dropdown)
        self.heatmap_failure_action.triggered.connect(
            lambda: self.view_dropdown.setCurrentIndex(5))
        self.heatmap_failure_action.setShortcut('F9')
        self.view_dropdown.addAction(self.heatmap_failure_action)

        self.check_icon = QIcon('view/icon/check_green.svg')
        self.cross_icon = QIcon('view/icon/x_red.svg')

        self.check_or_cross = QPushButton()
        self.check_or_cross.setFlat(True)
        self.check_or_cross.setStyleSheet(
            "QPushButton { border: none; margin: 0px; padding: 0px; }")
        self.check_or_cross.setIcon(self.check_icon)
        self.layout.addWidget(self.check_or_cross)

        # verification button
        self.verify_button = QPushButton("Verify")
        self.verify_button.setShortcut('Ctrl+E')
        self.verify_button.setToolTip(
            'Verify the current tree. Shortcut: Ctrl+E')
        self.layout.addWidget(self.verify_button)
        self.verify_button.clicked.connect(partial(self.verify_tree, True))

    def enable_verify_button(self, enable: bool = True):
        """
        Enable or disable the verify button and checkmark icon
        :param enable: enable or disable
        """
        self.check_or_cross.setEnabled(enable)
        self.verify_button.setEnabled(enable)

    def switch_views(self, new_view: str):
        """
        Switch view to the new view specified by the combo box
        :param new_view: Selected view in the combo box
        """
        self.gui.tree_view_widget.graphics_scene.switch_info_mode(
            new_view == "Info View")
        if new_view.startswith("Heatmap"):
            self.gui.tree_view_widget.graphics_scene.simulator_mode = True
            if self.gui.tree:
                mode = new_view.split()[-1]
                signal = self.gui.main_listener.create_heatmap_signal
                timer = self.gui.main_listener.heatmap_timer
                if timer.isActive():
                    timer.stop()
                    timer = QTimer()
                    self.gui.main_listener.heatmap_timer = timer
                timer.timeout.connect(lambda: signal.emit(
                    self.gui.tree.name, mode) if self.gui.tree else None)
                timer.start(250)
        else:
            self.gui.tree_view_widget.graphics_scene.simulator_mode = False
            self.gui.main_listener.heatmap_timer.stop()

    def verify_tree(self, message: bool = False):
        """
        Slot that checks a tree when the verify button has been clicked
        :param message: If a dialog should be shown, or only update the checkmark
        """
        collection = self.gui.collection
        tree = self.gui.tree
        category = self.gui.category
        errors = collection.verify_tree(tree, category)

        # update check or cross icon
        if len(errors) == 0:
            self.check_or_cross.setIcon(self.check_icon)
            self.check_or_cross.setToolTip(
                "No Errors were found during the last verification.")
        else:
            self.check_or_cross.setIcon(self.cross_icon)
            errors_tooltip = ["Errors during last verification run:"]
            errors_tooltip.extend(errors)
            self.check_or_cross.setToolTip('\n'.join(errors_tooltip))

        if message:
            if len(errors) == 0:
                view.windows.Dialogs.message_box(
                    "Success", "The Tree has been verified successfully. "
                    "No errors have been found.")
            else:
                view.windows.Dialogs.error_box(
                    "Error", "There were errors while verifying the tree, "
                    "click more details for more info.", errors)
Example #2
0
class Qt_Test_Frame(QMainWindow):

    Items = []

    def __init__(self):
        #super(Qt_Test_Frame, self).__init__(*args, **kw)
        super().__init__()

        # 初始化界面
        self._initUI()

        self.show()

    def _initUI(self):
        self.setWindowTitle("QT图形界面测试")
        self.resize(800, 600)

        wwg = QWidget()

        # 全局布局
        wlayout = QVBoxLayout()
        h1_wlayout = QHBoxLayout()
        h2_wlayout = QHBoxLayout()
        h3_wlayout = QHBoxLayout()
        v4_wlayout = QVBoxLayout()
        v5_wlayout = QVBoxLayout()

        self.statusBar().showMessage("状态栏")

        # 第一层
        self._frist_story(h1_wlayout)

        # 第二层
        self._second_story(h2_wlayout)

        # 第三层 左
        self._third_left(v4_wlayout, v5_wlayout)

        # 第三层 右
        self._fouth_right(v5_wlayout)

        # 加载
        splt = self._my_line()
        splt2 = self._my_line(False)
        wlayout.addSpacing(10)  # 增加布局间距
        wlayout.addLayout(h1_wlayout)
        wlayout.addSpacing(10)  # 增加布局间距
        wlayout.addLayout(h2_wlayout)
        wlayout.addSpacing(10)  # 增加布局间距
        wlayout.addWidget(splt)
        wlayout.addLayout(h3_wlayout)
        wlayout.addWidget(self.statusBar())
        h3_wlayout.addLayout(v4_wlayout, 0)
        h3_wlayout.addWidget(splt2)
        h3_wlayout.addLayout(v5_wlayout, 2)

        #wlayout.setAlignment(Qt.AlignTop)

        wwg.setLayout(wlayout)
        self.setCentralWidget(wwg)

    def _frist_story(self, h1_wlayout):
        # 第一层布局
        self.h1_combox1 = QComboBox(minimumWidth=100)
        self.h1_combox1.addItems(wind_field)
        self.h1_combox2 = QComboBox(minimumWidth=100)
        self.h1_combox2.addItems(
            wind_mach_chooice(self.h1_combox1.currentText()))
        self.h1_combox3 = QComboBox(minimumWidth=100)
        self.h1_combox3.addItems(wind_blade)
        self.h1_combox4 = QComboBox(minimumWidth=100)
        self.h1_combox4.addItems(signal_type)

        # 行为测试 暂时无法使用
        h1_cb1_action = QAction("风场选择", self)
        h1_cb1_action.setStatusTip("请选择风场")
        self.h1_combox1.addAction(h1_cb1_action)

        h1_wlayout.addItem(QSpacerItem(20, 20))
        h1_wlayout.addWidget(QLabel("风场"), 0)
        h1_wlayout.addWidget(self.h1_combox1, 0)
        h1_wlayout.addItem(QSpacerItem(40, 20))
        h1_wlayout.addWidget(QLabel("风机"), 0)
        h1_wlayout.addWidget(self.h1_combox2, 0)
        h1_wlayout.addItem(QSpacerItem(40, 20))
        h1_wlayout.addWidget(QLabel("叶片ID"), 0)
        h1_wlayout.addWidget(self.h1_combox3, 0)
        h1_wlayout.addItem(QSpacerItem(40, 20))
        h1_wlayout.addWidget(QLabel("信号类型"), 0)
        h1_wlayout.addWidget(self.h1_combox4, 0)

        h1_wlayout.setAlignment(Qt.AlignLeft)

        # 事件绑定
        self.h1_combox1.currentIndexChanged.connect(self._wind_chooice)

    def _second_story(self, h2_wlayout):
        # 第二层布局
        self.h2_date1 = QDateEdit(QDate.currentDate())
        self.h2_date1.setCalendarPopup(True)
        self.h2_date2 = QDateEdit(QDate.currentDate())
        self.h2_date2.setCalendarPopup(True)
        self.h2_button = QPushButton("运行")
        self.h2_button2 = QPushButton("停止")

        h2_wlayout.addItem(QSpacerItem(20, 20))
        h2_wlayout.addWidget(QLabel("起始"), 0)
        h2_wlayout.addWidget(self.h2_date1)
        h2_wlayout.addItem(QSpacerItem(50, 20))
        h2_wlayout.addWidget(QLabel("结束"), 0)
        h2_wlayout.addWidget(self.h2_date2)
        h2_wlayout.addItem(QSpacerItem(70, 20))
        h2_wlayout.addWidget(self.h2_button)
        h2_wlayout.addWidget(self.h2_button2)

        h2_wlayout.setAlignment(Qt.AlignLeft)

        # 事件绑定
        self.h2_button.clicked.connect(lambda: self._start_func())
        self.h2_button2.clicked.connect(lambda: self._stop_func())

    def _third_left(self, v4_wlayout, v5_wlayout):
        # 第三层布局
        # 分量布局
        v4_group_imf = QGridLayout()
        vbox1 = QGroupBox("分量值")
        self.radio_1 = QRadioButton("分量1")
        self.radio_2 = QRadioButton("分量2")
        self.radio_3 = QRadioButton("分量3")
        self.radio_4 = QRadioButton("分量4")
        self.radio_5 = QRadioButton("分量5")
        self.radio_6 = QRadioButton("分量6")
        self.radio_7 = QRadioButton("分量7")
        self.radio_8 = QRadioButton("分量8")
        self.radio_9 = QRadioButton("分量9")
        self.radio_1.setChecked(True)
        self.radio_val = self.radio_1.text()

        # 优先级布局
        v4_group_prior = QGridLayout()
        vbox2 = QGroupBox("优先级")
        cb1 = QCheckBox("叶片1")
        cb2 = QCheckBox("叶片2")
        cb3 = QCheckBox("叶片3")
        self.v4_lineEdit = QLineEdit()

        # 时间布局
        v4_group_time = QGridLayout()
        vbox3 = QGroupBox("时间选择")
        self.v4_combox1 = QComboBox(minimumWidth=100)
        self.v4_combox1.addItem("空")

        # 按键
        v4_button = QPushButton("显示图形")

        # 写入网格格布局
        v4_group_imf.addWidget(self.radio_1, 0, 0)
        v4_group_imf.addWidget(self.radio_2, 0, 1)
        v4_group_imf.addWidget(self.radio_3, 1, 0)
        v4_group_imf.addWidget(self.radio_4, 1, 1)
        v4_group_imf.addWidget(self.radio_5, 2, 0)
        v4_group_imf.addWidget(self.radio_6, 2, 1)
        v4_group_imf.addWidget(self.radio_7, 3, 0)
        v4_group_imf.addWidget(self.radio_8, 3, 1)
        v4_group_imf.addWidget(self.radio_9, 4, 0)

        v4_group_prior.addWidget(cb1, 1, 0)
        v4_group_prior.addWidget(cb2, 2, 0)
        v4_group_prior.addWidget(cb3, 3, 0)
        v4_group_prior.addWidget(QLabel("选择是:"), 4, 0)
        v4_group_prior.addWidget(self.v4_lineEdit, 5, 0)

        v4_group_time.addWidget(self.v4_combox1)

        # 写入左侧布局
        vbox1.setLayout(v4_group_imf)
        vbox2.setLayout(v4_group_prior)
        vbox3.setLayout(v4_group_time)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(vbox1)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(vbox2)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(vbox3)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(v4_button)
        v4_wlayout.addItem(QSpacerItem(50, 20))

        # 事件绑定
        self.radio_1.toggled.connect(lambda: self._changestyle(self.radio_1))
        self.radio_2.toggled.connect(lambda: self._changestyle(self.radio_2))
        self.radio_3.toggled.connect(lambda: self._changestyle(self.radio_3))
        self.radio_4.toggled.connect(lambda: self._changestyle(self.radio_4))
        self.radio_5.toggled.connect(lambda: self._changestyle(self.radio_5))
        self.radio_6.toggled.connect(lambda: self._changestyle(self.radio_6))
        self.radio_7.toggled.connect(lambda: self._changestyle(self.radio_7))
        self.radio_8.toggled.connect(lambda: self._changestyle(self.radio_8))
        self.radio_9.toggled.connect(lambda: self._changestyle(self.radio_9))

        cb1.stateChanged.connect(lambda: self._prior_func(cb1))
        cb2.stateChanged.connect(lambda: self._prior_func(cb2))
        cb3.stateChanged.connect(lambda: self._prior_func(cb3))

        v4_button.clicked.connect(lambda: self._show_func(v5_wlayout))

    def _fouth_right(self, v5_wlayout):
        # 加载波形图
        self.tmp_plt = plt_init()
        v5_wlayout.addWidget(self.tmp_plt)

    def _my_line(self, var=True):
        # var 为True时,为横线,否则为竖线
        line = QFrame(self)
        line_var = QFrame.HLine
        sp_var = Qt.Horizontal
        if not var:
            line_var = QFrame.VLine
            sp_var = Qt.Vertical
        line.setFrameShape(line_var)
        line.setFrameShadow(QFrame.Sunken)
        splitter = QSplitter(sp_var)
        splitter.addWidget(line)
        return splitter

    def _wind_chooice(self):
        tmp_list = wind_mach_chooice(self.h1_combox1.currentText())
        self.h1_combox2.clear()
        self.h1_combox2.addItems(tmp_list)

    def _start_func(self):
        a = self.h1_combox1.currentText()
        b = self.h1_combox2.currentText()
        c = self.h1_combox3.currentText()
        d = self.h1_combox4.currentText()
        e = self.h2_date1.dateTime().toString("yy-MM-dd")
        f = self.h2_date2.dateTime().toString("yy-MM-dd")
        self.start_func = RunThread(target=self._start_thread,
                                    args=(a, b, c, d, e, f))
        #self.start_func = MyThread(target=self._print, args=(a, b, c, d, e, f))
        self.start_func.start()

    def _stop_func(self):
        self.start_func.stop()
        print("运行结束")

    def _start_thread(self, a, b, c, d, e, f):
        print("*****运行打印*****")
        print(wind_mach_chooice(a))
        print(a, b, c, d)
        print(e)
        print(f)
        print("%s" % (time.strftime('<%H:%M:%S>', time.localtime())))
        self.v4_combox1.clear()
        self.v4_combox1.addItems(tmp_time_list)
        print("*****运行打印*****")

    def _changestyle(self, btn):
        # 单选项的判断函数
        if btn.isChecked():
            self.radio_val = btn.text()
        #print("%s"%(time.strftime('<%H:%M:%S>', time.localtime())))

    def _prior_func(self, cb):
        # 复选框内容添加
        if cb.isChecked():
            if cb.text()[-1] not in self.Items:
                self.Items.append(cb.text()[-1])
            shop_cart = ",".join(self.Items)
            self.v4_lineEdit.setText(shop_cart)
        else:
            if cb.text()[-1] in self.Items:
                self.Items.remove(cb.text()[-1])
            shop_cart = ",".join(self.Items)
            self.v4_lineEdit.setText(shop_cart)

    def _show_func(self, v5_wlayout):
        print("*****显示打印*****")
        print(self.radio_val)
        num = self.v4_lineEdit.text()
        print(self.v4_combox1.currentText())
        v5_wlayout.removeWidget(self.tmp_plt)
        self.tmp_plt = plt_show(num)
        v5_wlayout.addWidget(self.tmp_plt)
        print("*****显示打印*****")
Example #3
0
class Qt_Test_Frame(QMainWindow):

    Items = []

    def __init__(self):
        #super(Qt_Test_Frame, self).__init__(*args, **kw)
        super().__init__()

        self.graph = Graph_Func()
        self.graph2 = Graph_Func()
        # 初始化界面
        self._initUI()

        self.show()

    def _initUI(self):
        self.setWindowTitle("风机采集图形化v2")
        self.resize(1024, 768)

        wwg = QWidget()

        # 全局布局
        wlayout = QVBoxLayout()
        h1_wlayout = QHBoxLayout()
        h2_wlayout = QHBoxLayout()
        h3_wlayout = QHBoxLayout()
        v4_wlayout = QVBoxLayout()
        self.v5_wlayout = QVBoxLayout()

        self.statusBar().showMessage("状态栏")

        # 第一层
        self._frist_story(h1_wlayout)

        # 第二层
        self._second_story(h2_wlayout)

        # 第三层 左
        self._third_left(v4_wlayout)

        # 第三层 右
        self._fouth_right()

        # 加载
        splt = self._my_line()
        splt2 = self._my_line(False)
        wlayout.addSpacing(10)  # 增加布局间距
        wlayout.addLayout(h1_wlayout)
        wlayout.addSpacing(10)  # 增加布局间距
        wlayout.addLayout(h2_wlayout)
        wlayout.addSpacing(10)  # 增加布局间距
        wlayout.addWidget(splt)
        wlayout.addLayout(h3_wlayout)
        wlayout.addWidget(self.statusBar())
        h3_wlayout.addLayout(v4_wlayout, 0)
        h3_wlayout.addWidget(splt2)
        h3_wlayout.addLayout(self.v5_wlayout, 2)

        #wlayout.setAlignment(Qt.AlignTop)

        wwg.setLayout(wlayout)
        self.setCentralWidget(wwg)

    def _frist_story(self, h1_wlayout):
        # 第一层布局
        self.h1_combox1 = QComboBox(minimumWidth=100)
        self.h1_combox1.addItems(ParaEMD().FengChang)
        self.h1_combox2 = QComboBox(minimumWidth=100)
        self.h1_combox2.addItems(ParaEMD().wind_mach_chooice(
            self.h1_combox1.currentText()))
        self.h1_combox3 = QComboBox(minimumWidth=100)
        self.h1_combox3.addItems(ParaEMD().IdBlade)
        self.h1_combox4 = QComboBox(minimumWidth=100)
        self.h1_combox4.addItems(ParaEMD().TypeData)

        # 行为测试 暂时无法使用
        h1_cb1_action = QAction("风场选择", self)
        h1_cb1_action.setStatusTip("请选择风场")
        self.h1_combox1.addAction(h1_cb1_action)

        h1_wlayout.addItem(QSpacerItem(20, 20))
        h1_wlayout.addWidget(QLabel("风场"), 0)
        h1_wlayout.addWidget(self.h1_combox1, 0)
        h1_wlayout.addItem(QSpacerItem(40, 20))
        h1_wlayout.addWidget(QLabel("风机"), 0)
        h1_wlayout.addWidget(self.h1_combox2, 0)
        h1_wlayout.addItem(QSpacerItem(40, 20))
        h1_wlayout.addWidget(QLabel("叶片ID"), 0)
        h1_wlayout.addWidget(self.h1_combox3, 0)
        h1_wlayout.addItem(QSpacerItem(40, 20))
        h1_wlayout.addWidget(QLabel("信号类型"), 0)
        h1_wlayout.addWidget(self.h1_combox4, 0)

        h1_wlayout.setAlignment(Qt.AlignLeft)

        # 事件绑定
        self.h1_combox1.currentIndexChanged.connect(self._wind_chooice)

    def _second_story(self, h2_wlayout):
        # 第二层布局
        self.h2_date1 = QDateEdit(QDate.currentDate())
        self.h2_date1.setCalendarPopup(True)
        self.h2_date2 = QDateEdit(QDate.currentDate())
        self.h2_date2.setCalendarPopup(True)
        self.h2_button = QPushButton("运行")
        self.h2_button2 = QPushButton("停止")

        h2_wlayout.addItem(QSpacerItem(20, 20))
        h2_wlayout.addWidget(QLabel("起始"), 0)
        h2_wlayout.addWidget(self.h2_date1)
        h2_wlayout.addItem(QSpacerItem(50, 20))
        h2_wlayout.addWidget(QLabel("结束"), 0)
        h2_wlayout.addWidget(self.h2_date2)
        h2_wlayout.addItem(QSpacerItem(70, 20))
        h2_wlayout.addWidget(self.h2_button)
        h2_wlayout.addWidget(self.h2_button2)

        h2_wlayout.setAlignment(Qt.AlignLeft)

        # 事件绑定
        self.h2_button.clicked.connect(lambda: self._start_func())
        self.h2_button2.clicked.connect(lambda: self._stop_func())

    def _third_left(self, v4_wlayout):
        # 第三层布局
        # 分量布局
        v4_group_imf = QGridLayout()
        vbox1 = QGroupBox("分量值")
        self.radio_1 = QRadioButton("分量1")
        self.radio_2 = QRadioButton("分量2")
        self.radio_3 = QRadioButton("分量3")
        self.radio_4 = QRadioButton("分量4")
        self.radio_5 = QRadioButton("分量5")
        self.radio_6 = QRadioButton("分量6")
        self.radio_7 = QRadioButton("分量7")
        self.radio_8 = QRadioButton("分量8")
        self.radio_9 = QRadioButton("分量9")
        self.radio_1.setChecked(True)
        self.radio_val = self.radio_1.text()

        # 优先级布局
        v4_group_prior = QGridLayout()
        vbox2 = QGroupBox("优先级")
        cb1 = QCheckBox("叶片1")
        cb2 = QCheckBox("叶片2")
        cb3 = QCheckBox("叶片3")
        self.v4_lineEdit = QLineEdit()

        # 时间布局
        v4_group_time = QGridLayout()
        vbox3 = QGroupBox("时间选择")
        self.v4_combox1 = QComboBox(minimumWidth=100)
        self.v4_combox1.addItem("空")

        # 按键
        v4_button = QPushButton("显示图形")

        # 写入网格格布局
        v4_group_imf.addWidget(self.radio_1, 0, 0)
        v4_group_imf.addWidget(self.radio_2, 0, 1)
        v4_group_imf.addWidget(self.radio_3, 1, 0)
        v4_group_imf.addWidget(self.radio_4, 1, 1)
        v4_group_imf.addWidget(self.radio_5, 2, 0)
        v4_group_imf.addWidget(self.radio_6, 2, 1)
        v4_group_imf.addWidget(self.radio_7, 3, 0)
        v4_group_imf.addWidget(self.radio_8, 3, 1)
        v4_group_imf.addWidget(self.radio_9, 4, 0)

        v4_group_prior.addWidget(cb1, 1, 0)
        v4_group_prior.addWidget(cb2, 2, 0)
        v4_group_prior.addWidget(cb3, 3, 0)
        v4_group_prior.addWidget(QLabel("选择是:"), 4, 0)
        v4_group_prior.addWidget(self.v4_lineEdit, 5, 0)

        v4_group_time.addWidget(self.v4_combox1)

        # 写入左侧布局
        vbox1.setLayout(v4_group_imf)
        vbox2.setLayout(v4_group_prior)
        vbox3.setLayout(v4_group_time)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(vbox1, 1)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(vbox2, 1)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(vbox3, 0)
        v4_wlayout.addItem(QSpacerItem(50, 20))
        v4_wlayout.addWidget(v4_button, 1)
        v4_wlayout.addItem(QSpacerItem(50, 20))

        # 事件绑定
        self.radio_1.toggled.connect(lambda: self._changestyle(self.radio_1))
        self.radio_2.toggled.connect(lambda: self._changestyle(self.radio_2))
        self.radio_3.toggled.connect(lambda: self._changestyle(self.radio_3))
        self.radio_4.toggled.connect(lambda: self._changestyle(self.radio_4))
        self.radio_5.toggled.connect(lambda: self._changestyle(self.radio_5))
        self.radio_6.toggled.connect(lambda: self._changestyle(self.radio_6))
        self.radio_7.toggled.connect(lambda: self._changestyle(self.radio_7))
        self.radio_8.toggled.connect(lambda: self._changestyle(self.radio_8))
        self.radio_9.toggled.connect(lambda: self._changestyle(self.radio_9))

        cb1.stateChanged.connect(lambda: self._prior_func(cb1))
        cb2.stateChanged.connect(lambda: self._prior_func(cb2))
        cb3.stateChanged.connect(lambda: self._prior_func(cb3))

        v4_button.clicked.connect(lambda: self._show_func())

    def _fouth_right(self):
        # 加载波形图
        #self.tmp_plt = self.graph.plt_init()
        self.v5_wlayout.addWidget(self.graph, 2)
        self.v5_wlayout.addWidget(self.graph2, 1)

    def _my_line(self, var=True):
        # var 为True时,为横线,否则为竖线
        line = QFrame(self)
        line_var = QFrame.HLine
        sp_var = Qt.Horizontal
        if not var:
            line_var = QFrame.VLine
            sp_var = Qt.Vertical
        line.setFrameShape(line_var)
        line.setFrameShadow(QFrame.Sunken)
        splitter = QSplitter(sp_var)
        splitter.addWidget(line)
        return splitter

    def _wind_chooice(self):
        tmp_list = ParaEMD().wind_mach_chooice(self.h1_combox1.currentText())
        self.h1_combox2.clear()
        self.h1_combox2.addItems(tmp_list)

    def _start_func(self):
        a = self.h1_combox1.currentText()
        b = self.h1_combox2.currentText()
        c = self.h1_combox3.currentText()
        d = self.h1_combox4.currentText()
        e = self.h2_date1.dateTime().toString("yyyy/MM/dd")
        f = self.h2_date2.dateTime().toString("yyyy/MM/dd")
        self.start_thread = MyThread(target=self._start_thread,
                                     args=(a, b, c, d, e, f))
        self.start_thread.start()

    def _stop_func(self):
        # 停止按钮
        self.start_thread.stop()
        print("运行结束")

    # 需要修改
    def _start_thread(self, *args):
        """
        运行按钮线程,传入参数
        :param args: 风场, 风机, 叶片ID, 信号类型,开始时间, 结束时间
        :return:
        """
        # print("*****运行键打印*****")
        # for var in args:
        #     print(var)
        #
        location = args[0]
        fan = args[1]
        fanid = args[2]
        typedata = args[3]
        start_time = args[4]
        end_time = args[5]
        ParaEMD().EMDTRS(location, fan, fanid, typedata, start_time, end_time)
        #主程序

        self.v4_combox1.clear()
        # 等函数执行完后,返回时间选择列表 参数为时间列表
        self.v4_combox1.addItems(ParaEMD().tmp_list())
        print("*****运行键打印*****")

    def _changestyle(self, btn):
        # 单选项的判断函数
        if btn.isChecked():
            self.radio_val = btn.text()
        #print("%s"%(time.strftime('<%H:%M:%S>', time.localtime())))

    def _prior_func(self, cb):
        # 复选框内容添加
        if cb.isChecked():
            if cb.text()[-1] not in self.Items:
                self.Items.append(cb.text()[-1])
            shop_cart = ",".join(self.Items)
            self.v4_lineEdit.setText(shop_cart)
        else:
            if cb.text()[-1] in self.Items:
                self.Items.remove(cb.text()[-1])
            shop_cart = ",".join(self.Items)
            self.v4_lineEdit.setText(shop_cart)

    # 需传改
    def _show_func(self):
        """
        a: IMF分量, b: 显示优先级, c: 时间选择列表
        d: 叶片ID
        :return:
        """
        print("*****显示打印*****")
        a = self.radio_val
        b = self.v4_lineEdit.text()
        c = self.v4_combox1.currentText()
        d = self.h1_combox3.currentText()

        # 在下面函数传入数据列表 参数为:CSV文件
        self.graph.set_data(ParaEMD().test1_data())  #幅值数据
        #添加题注的三个gD

        self.graph2.set_data(ParaEMD().test1_data())  #gD数据

        # 下面为画图操作,无不用修改
        #self.v5_wlayout.removeWidget(self.graph)
        #self.tmp_plt = self.graph.plt_show(b)
        #self.v5_wlayout.addWidget(self.tmp_plt)
        self.graph.plt_show(b)
        self.graph2.plt_show(b)
        print("*****显示打印*****")