Esempio n. 1
0
 def __init__(self, model: DataFrameModel, df_manager, **kwargs):
     QtGui.QMainWindow.__init__(self, parent=kwargs.pop('parent', None))
     self.df_manager = df_manager
     self._df_model = None
     self._df_model_transposed = None
     self._view_transposed = False
     self._widget = DataTableWidget()
     self._widget.setModel(model)
     kwargs['parent'] = self
     self.setupUi(self)
     self.dialog_fields_edit = FieldsEditDialog(model, parent=self)
     self.dialog_export = DataFrameModelExportDialog(
         df_manager,
         filename=model.filePath,
         allow_multi_source=False,
         parent=self)
     self.dialog_split = SplitFileDialog(model, parent=self)
     self.dialog_analyze = FileAnalyzerDialog(model, parent=self)
     self.dialog_normalize = ColumnNormalizerDialog(model, parent=self)
     self.dialog_merge_purge = kwargs.pop(
         'merge_purge_dialog',
         MergePurgeDialog(
             df_manager,
             source_model=model,
         ))
     self.connect_actions()
     self.connect_icons()
Esempio n. 2
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pandastablewidget = DataTableWidget(self.centralwidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(10, 60, 591, 451))
        self.pandastablewidget.setObjectName("pandastablewidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(630, 90, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(640, 320, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Esempio n. 3
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.pandastablewidget = DataTableWidget(self.centralWidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(10, 30, 591, 331))
        self.pandastablewidget.setObjectName("pandastablewidget")
        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(660, 70, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(660, 240, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menuBar.setObjectName("menuBar")
        MainWindow.setMenuBar(self.menuBar)
        self.statusBar = QtWidgets.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "数据初始化"))
        self.pushButton_2.setText(_translate("MainWindow", "保存数据"))
Esempio n. 4
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(903, 678)
        self.layoutWidget = QtWidgets.QWidget(Form)
        self.layoutWidget.setGeometry(QtCore.QRect(20, 40, 761, 541))
        self.layoutWidget.setObjectName("layoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.quit_btn_7 = QtWidgets.QPushButton(self.layoutWidget)
        self.quit_btn_7.setObjectName("quit_btn_7")
        self.gridLayout.addWidget(self.quit_btn_7, 0, 1, 1, 1)
        self.quit_btn = QtWidgets.QPushButton(self.layoutWidget)
        self.quit_btn.setObjectName("quit_btn")
        self.gridLayout.addWidget(self.quit_btn, 0, 2, 1, 1)
        self.widget_2 = DataTableWidget(self.layoutWidget)
        self.widget_2.setObjectName("widget_2")
        self.gridLayout.addWidget(self.widget_2, 2, 0, 2, 3)
        self.quit_btn_5 = QtWidgets.QPushButton(self.layoutWidget)
        self.quit_btn_5.setObjectName("quit_btn_5")
        self.gridLayout.addWidget(self.quit_btn_5, 0, 0, 1, 1)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.quit_btn_7.setText(_translate("Form", "保存数据"))
        self.quit_btn.setText(_translate("Form", "退出"))
        self.quit_btn_5.setText(_translate("Form", "导入数据"))
Esempio n. 5
0
class FileTableWindow(QtGui.QMainWindow, Ui_FileWindow):
    def __init__(self, model: DataFrameModel,
                 df_manager: DataFrameModelManager, **kwargs):
        QtGui.QMainWindow.__init__(self, parent=kwargs.pop('parent', None))
        self.df_manager = df_manager
        self._widget = DataTableWidget()
        self._widget.setModel(model)

        kwargs['parent'] = self
        self.icons = Icons()
        self.setupUi(self)
        self.dialog_rename = None
        self.dialog_fields_edit = None
        self.connect_actions()
        self.connect_icons()

    @property
    def widget(self):
        # Overrides the Ui_FileWindow.widget
        return self._widget

    @widget.setter
    def widget(self, x):
        # Prevent the Ui_FileWindow from overriding our widget.
        pass

    @property
    def currentModel(self):
        return self.widget.model()

    @property
    def currentDataFrame(self):
        return self.currentModel._dataFrame

    def connect_actions(self):
        self.actionEditFields.triggered.connect(self.open_fields_edit_dialog)

    def connect_icons(self):
        self.setWindowTitle("{}".format(self.currentModel.filePath))
        self.setWindowIcon(self.icons['spreadsheet'])
        self.actionExecuteScript.setIcon(self.icons['edit'])
        self.actionDelete.setIcon(self.icons['delete'])
        self.actionMergePurge.setVisible(False)
        self.actionSave.setIcon(self.icons['save'])
        self.actionSuppress.setIcon(self.icons['suppress'])
        self.actionEditFields.setIcon(self.icons['add_column'])

    def open_rename_dialog(self):
        if self.dialog_rename is None:
            self.dialog_rename = RenameDialog(parent=self,
                                              model=self.currentModel)
        self.dialog_rename.show()

    def open_fields_edit_dialog(self):
        if self.dialog_fields_edit is None:
            self.dialog_fields_edit = FieldsEditDialog(self.currentModel,
                                                       parent=self)
        self.dialog_fields_edit.show()
Esempio n. 6
0
    def test_removeColumns(self, qtbot, dataModel2):
        widget = DataTableWidget()
        qtbot.addWidget(widget)
        widget.show()

        widget.setViewModel(dataModel2)

        df = dataModel2.dataFrame().copy()

        buttons = widget.findChildren(QtGui.QToolButton)
        for btn in buttons:
            if btn.isEnabled:
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                break

        for btn in buttons:
            if btn.objectName() == 'removecolumnbutton':
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                dlg = widget.findChildren(QtGui.QDialog)[-1]

                listview = dlg.findChildren(QtGui.QListView)[-1]

                listview.selectAll()

                dlg_buttons = dlg.findChildren(QtGui.QPushButton)

                for b in dlg_buttons:
                    if b.text() == 'OK':
                        qtbot.mouseClick(b, QtCore.Qt.LeftButton)
                        break

        assert widget.view().model().columnCount() == 0
Esempio n. 7
0
 def show_data(self):
     """
     展示读取进来的数据
     """
     self.widget = DataTableWidget(self.ui)
     model = DataFrameModel()
     model.setDataFrame(self.DataHelper.data)
     self.widget.setViewModel(model)
     self.widget.move(30, 200)
     self.widget.resize(350, 350)
     self.widget.show()
Esempio n. 8
0
    def __init__(self, model: DataFrameModel,
                 df_manager: DataFrameModelManager, **kwargs):
        QtGui.QMainWindow.__init__(self, parent=kwargs.pop('parent', None))
        self.df_manager = df_manager
        self._widget = DataTableWidget()
        self._widget.setModel(model)

        kwargs['parent'] = self
        self.icons = Icons()
        self.setupUi(self)
        self.dialog_rename = None
        self.dialog_fields_edit = None
        self.connect_actions()
        self.connect_icons()
Esempio n. 9
0
    def test_click_each_button(self, qtbot, dataModel):
        widget = DataTableWidget()
        qtbot.addWidget(widget)
        widget.show()

        widget.setViewModel(dataModel)

        buttons = widget.findChildren(QtGui.QToolButton)
        for btn in buttons:
            if btn.isEnabled:
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                break

        for btn in buttons:
            if btn.objectName() == 'editbutton':
                continue

            if btn.objectName() in ['addcolumnbutton', 'removecolumnbutton']:
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                dlg = widget.findChildren(QtGui.QDialog)[-1]

                dlg_buttons = dlg.findChildren(QtGui.QPushButton)

                for b in dlg_buttons:
                    if b.text() == 'Cancel':
                        qtbot.mouseClick(b, QtCore.Qt.LeftButton)
                        break
            else:
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
Esempio n. 10
0
    def setupUi(self, offer_Form):
        offer_Form.setObjectName("offer_Form")
        offer_Form.resize(653, 500)
        self.pushButton = QtWidgets.QPushButton(offer_Form)
        self.pushButton.setGeometry(QtCore.QRect(680, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(offer_Form)
        self.pushButton_2.setGeometry(QtCore.QRect(680, 170, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.offerwidget = DataTableWidget(offer_Form)
        self.offerwidget.setGeometry(QtCore.QRect(50, 30, 491, 391))
        self.offerwidget.setObjectName("offerwidget")

        self.retranslateUi(offer_Form)
        QtCore.QMetaObject.connectSlotsByName(offer_Form)
Esempio n. 11
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(680, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(680, 170, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pandastablewidget = DataTableWidget(self.centralWidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(10, 30, 591, 331))
        self.pandastablewidget.setStyleSheet("")
        self.pandastablewidget.setObjectName("pandastablewidget")
        MainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Esempio n. 12
0
    def test_setModel(self, qtbot, dataModel):
        widget = DataTableWidget()
        qtbot.addWidget(widget)
        widget.show()

        widget.setViewModel(dataModel)

        assert widget.view().model() is not None
        assert widget.view().model() == dataModel

        buttons = widget.findChildren(QtGui.QToolButton)
        for btn in buttons:
            if btn.isEnabled:
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                assert widget.view().model().editable

                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                assert not widget.view().model().editable

                break
Esempio n. 13
0
class Ui_Mine5(object):
    def click1(self):
        self.form.close()
        Form1 = QtWidgets.QMainWindow()
        self.ui = Mine.Ui_Mine()
        self.ui.setupUi(Form1)
        Form1.show()

    def setupUi(self, Mine5):
        Mine5.setObjectName("Mine5")
        Mine5.resize(1259, 879)
        Mine5.setStyleSheet("border-image: url(:/M11.jpg);")
        Mine5.setWindowFlags(Qt.FramelessWindowHint)
        self.form = Mine5
        self.centralwidget = QtWidgets.QWidget(Mine5)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, -10, 861, 101))
        self.pushButton.setStyleSheet("border-image: url(:/M16.jpg);\n"
"font: 14pt \"华文新魏\";")
        self.pushButton.setObjectName("pushButton")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(890, 0, 361, 81))
        self.label_2.setStyleSheet("\n"
"border-image: url(:/M10.jpg);")
        self.label_2.setObjectName("label_2")
        self.pandastablewidget = DataTableWidget(self.centralwidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(-10, 90, 1251, 741))
        self.pandastablewidget.setStyleSheet("border-image: url(:/M8.png);")
        self.pandastablewidget.setObjectName("pandastablewidget")
        self.model = DataFrameModel()
        self.pandastablewidget.setViewModel(self.model)
        self.model.setDataFrame(db)
        Mine5.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(Mine5)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1259, 26))
        self.menubar.setObjectName("menubar")
        Mine5.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(Mine5)
        self.statusbar.setObjectName("statusbar")
        Mine5.setStatusBar(self.statusbar)

        self.retranslateUi(Mine5)
        self.pushButton.clicked.connect(self.click1)
        QtCore.QMetaObject.connectSlotsByName(Mine5)

    def retranslateUi(self, Mine5):
        _translate = QtCore.QCoreApplication.translate
        Mine5.setWindowTitle(_translate("Mine5", "欢迎使用喵眼!"))
        self.pushButton.setText(_translate("Mine5", "返回"))
        self.label_2.setText(_translate("Mine5", "TextLabel"))
Esempio n. 14
0
    def setup_ui(self):
        self.setWindowTitle("查詢結果")
        self.setFont(PyQt5.QtGui.QFont("Times New Roman", 11))

        self.buttonCopy = QPushButton("複製查詢結果 (Ctrl+C)")
        self.buttonCopy.clicked.connect(self.copy)
        self.labelInfo = QLabel("")
        self.shortcut = QShortcut(PyQt5.QtGui.QKeySequence("Ctrl+C"), self)
        self.shortcut.activated.connect(self.copy)

        self.formLayout = QFormLayout()
        self.formLayout.addRow(self.buttonCopy, self.labelInfo)

        self.widget = DataTableWidget()
        self.widget.setButtonsVisible(False)
        self.widget.setMinimumSize(600, 600)

        self.vbox = QVBoxLayout()
        self.vbox.addLayout(self.formLayout)
        self.vbox.addWidget(self.widget)
        self.setLayout(self.vbox)
Esempio n. 15
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(680, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(680, 170, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pandastablewidget = DataTableWidget(self.centralWidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(10, 30, 591, 331))
        self.pandastablewidget.setStyleSheet("")
        self.pandastablewidget.setObjectName("pandastablewidget")
        # self.pandastablewidget.setAcceptDrops(true)#打开拖拽
        MainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "数据初始化"))
        self.pushButton_2.setText(_translate("MainWindow", "保存数据"))
Esempio n. 16
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(680, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(680, 170, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pandastablewidget = DataTableWidget(self.centralWidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(10, 30, 591, 331))
        self.pandastablewidget.setStyleSheet("")
        self.pandastablewidget.setObjectName("pandastablewidget")
        MainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "数据初始化"))
        self.pushButton_2.setText(_translate("MainWindow", "保存数据"))
Esempio n. 17
0
    def test_enableToolBar(self, qtbot):
        widget = DataTableWidget()
        qtbot.addWidget(widget)
        widget.show()

        assert widget.view().model() is None

        buttons = widget.findChildren(QtGui.QToolButton)

        exclude_button = None
        for btn in buttons:
            if btn.isEnabled:
                qtbot.mouseClick(btn, QtCore.Qt.LeftButton)
                exclude_button = btn
                assert btn.isChecked()
                break

        for button in buttons:
            assert button.isEnabled()

        qtbot.mouseClick(btn, QtCore.Qt.LeftButton)

        for button in buttons:
            if button == exclude_button:
                continue
            assert not button.isEnabled()
            assert not button.isChecked()
Esempio n. 18
0
class Ui_offer_Form(object):
    def setupUi(self, offer_Form):
        offer_Form.setObjectName("offer_Form")
        offer_Form.resize(653, 500)
        self.pushButton = QtWidgets.QPushButton(offer_Form)
        self.pushButton.setGeometry(QtCore.QRect(680, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(offer_Form)
        self.pushButton_2.setGeometry(QtCore.QRect(680, 170, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.offerwidget = DataTableWidget(offer_Form)
        self.offerwidget.setGeometry(QtCore.QRect(50, 30, 491, 391))
        self.offerwidget.setObjectName("offerwidget")

        self.retranslateUi(offer_Form)
        QtCore.QMetaObject.connectSlotsByName(offer_Form)

    def retranslateUi(self, offer_Form):
        _translate = QtCore.QCoreApplication.translate
        offer_Form.setWindowTitle(_translate("offer_Form", "Form"))
        self.pushButton.setText(_translate("MainWindow", "数据初始化"))
        self.pushButton_2.setText(_translate("MainWindow", "保存数据"))
Esempio n. 19
0
    def setupUi(self, Mine5):
        Mine5.setObjectName("Mine5")
        Mine5.resize(1259, 879)
        Mine5.setStyleSheet("border-image: url(:/M11.jpg);")
        Mine5.setWindowFlags(Qt.FramelessWindowHint)
        self.form = Mine5
        self.centralwidget = QtWidgets.QWidget(Mine5)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, -10, 861, 101))
        self.pushButton.setStyleSheet("border-image: url(:/M16.jpg);\n"
"font: 14pt \"华文新魏\";")
        self.pushButton.setObjectName("pushButton")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(890, 0, 361, 81))
        self.label_2.setStyleSheet("\n"
"border-image: url(:/M10.jpg);")
        self.label_2.setObjectName("label_2")
        self.pandastablewidget = DataTableWidget(self.centralwidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(-10, 90, 1251, 741))
        self.pandastablewidget.setStyleSheet("border-image: url(:/M8.png);")
        self.pandastablewidget.setObjectName("pandastablewidget")
        self.model = DataFrameModel()
        self.pandastablewidget.setViewModel(self.model)
        self.model.setDataFrame(db)
        Mine5.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(Mine5)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1259, 26))
        self.menubar.setObjectName("menubar")
        Mine5.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(Mine5)
        self.statusbar.setObjectName("statusbar")
        Mine5.setStatusBar(self.statusbar)

        self.retranslateUi(Mine5)
        self.pushButton.clicked.connect(self.click1)
        QtCore.QMetaObject.connectSlotsByName(Mine5)
Esempio n. 20
0
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(903, 678)
        self.layoutWidget = QtWidgets.QWidget(Form)
        self.layoutWidget.setGeometry(QtCore.QRect(20, 40, 761, 541))
        self.layoutWidget.setObjectName("layoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.quit_btn_7 = QtWidgets.QPushButton(self.layoutWidget)
        self.quit_btn_7.setObjectName("quit_btn_7")
        self.gridLayout.addWidget(self.quit_btn_7, 0, 1, 1, 1)
        self.quit_btn = QtWidgets.QPushButton(self.layoutWidget)
        self.quit_btn.setObjectName("quit_btn")
        self.gridLayout.addWidget(self.quit_btn, 0, 2, 1, 1)
        self.widget_2 = DataTableWidget(self.layoutWidget)
        self.widget_2.setObjectName("widget_2")
        self.gridLayout.addWidget(self.widget_2, 2, 0, 2, 3)
        self.quit_btn_5 = QtWidgets.QPushButton(self.layoutWidget)
        self.quit_btn_5.setObjectName("quit_btn_5")
        self.gridLayout.addWidget(self.quit_btn_5, 0, 0, 1, 1)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
Esempio n. 21
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(680, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(680, 170, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pandastablewidget = DataTableWidget(self.centralWidget)
        self.pandastablewidget.setGeometry(QtCore.QRect(10, 30, 591, 331))
        self.pandastablewidget.setStyleSheet("")
        self.pandastablewidget.setObjectName("pandastablewidget")
        MainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Esempio n. 22
0
    def test_init(self, qtbot):
        widget = DataTableWidget()
        qtbot.addWidget(widget)
        widget.show()

        assert widget.view().model() is None

        buttons = widget.findChildren(QtGui.QToolButton)

        enabled_counter = 0
        for btn in buttons:
            assert not btn.isChecked()
            if btn.isEnabled():
                enabled_counter += 1

        assert enabled_counter == 1
Esempio n. 23
0
from qtpandas.excepthook import excepthook

# Use QtGui from the compat module to take care if correct sip version, etc.
from qtpandas.compat import QtGui
from qtpandas.models.DataFrameModel import DataFrameModel
from qtpandas.views.DataTableView import DataTableWidget
# from qtpandas.views._ui import icons_rc

sys.excepthook = excepthook  # 設定PyQt的異常鉤子,基本上在本例沒什麼作用

# 建立一個空的模型,該模型用來儲存與處理資料
model = DataFrameModel()

# 建立一個應用程式顯示表格
app = QtGui.QApplication([])
widget = DataTableWidget()  # 建立一個空的表格,用來呈現資料
widget.resize(500, 300)  # 調整Widget的大小
widget.show()
# 讓表格繫結模型,也就是呈現模型的內容
widget.setViewModel(model)

# 建立測試資料
data = {
    'A': [10, 11, 12],
    'B': [20, 21, 22],
    'C': ['Peter Pan', 'Cpt. Hook', 'Tinkerbell']
}
df = pandas.DataFrame(data)

# 下面兩列用來測試委託是否成立
df['A'] = df['A'].astype(numpy.int8)  # A欄資料格式變成整數
Esempio n. 24
0
from qtpandas.excepthook import excepthook

# Use QtGui from the compat module to take care if correct sip version, etc.
from qtpandas.compat import QtGui
from qtpandas.models.DataFrameModel import DataFrameModel
from qtpandas.views.DataTableView import DataTableWidget
# from qtpandas.views._ui import icons_rc

sys.excepthook = excepthook # 设置PyQt的异常钩子,在本例中基本没什么用

# 创建一个空的模型,该模型用于存储与处理数据
model = DataFrameModel()

# 创建一个应用用于显示表格
app = QtGui.QApplication([])
widget = DataTableWidget() # 创建一个空的表格,主要用来呈现数据
widget.resize(500, 300) # 调整Widget的大小
widget.show()
# 让表格绑定模型,也就是让表格呈现模型的内容
widget.setViewModel(model)

# 创建测试数据
data = {
    'A': [10, 11, 12],
    'B': [20, 21, 22],
    'C': ['Peter Pan', 'Cpt. Hook', 'Tinkerbell']
}
df = pandas.DataFrame(data)

# 下面两列用来测试委托是否成立
df['A'] = df['A'].astype(numpy.int8) # A列数据格式变成整型
Esempio n. 25
0
    def setupUi(self, Query_Form):
        Query_Form.setObjectName("Query_Form")
        Query_Form.resize(844, 678)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            Query_Form.sizePolicy().hasHeightForWidth())
        Query_Form.setSizePolicy(sizePolicy)
        self.verticalLayout = QtWidgets.QVBoxLayout(Query_Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
        self.gridLayout.setHorizontalSpacing(0)
        self.gridLayout.setObjectName("gridLayout")
        self.comboBox = QtWidgets.QComboBox(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.comboBox.sizePolicy().hasHeightForWidth())
        self.comboBox.setSizePolicy(sizePolicy)
        self.comboBox.setObjectName("comboBox")
        self.gridLayout.addWidget(self.comboBox, 0, 0, 1, 1)
        self.comboBox_3 = QtWidgets.QComboBox(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.comboBox_3.sizePolicy().hasHeightForWidth())
        self.comboBox_3.setSizePolicy(sizePolicy)
        self.comboBox_3.setObjectName("comboBox_3")
        self.gridLayout.addWidget(self.comboBox_3, 0, 1, 1, 1)
        self.comboBox_4 = QtWidgets.QComboBox(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.comboBox_4.sizePolicy().hasHeightForWidth())
        self.comboBox_4.setSizePolicy(sizePolicy)
        self.comboBox_4.setObjectName("comboBox_4")
        self.gridLayout.addWidget(self.comboBox_4, 0, 2, 1, 1)
        self.comboBox_5 = QtWidgets.QComboBox(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.comboBox_5.sizePolicy().hasHeightForWidth())
        self.comboBox_5.setSizePolicy(sizePolicy)
        self.comboBox_5.setObjectName("comboBox_5")
        self.gridLayout.addWidget(self.comboBox_5, 0, 3, 1, 1)
        self.comboBox_2 = QtWidgets.QComboBox(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.comboBox_2.sizePolicy().hasHeightForWidth())
        self.comboBox_2.setSizePolicy(sizePolicy)
        self.comboBox_2.setObjectName("comboBox_2")
        self.gridLayout.addWidget(self.comboBox_2, 1, 0, 1, 1)
        self.lineEdit = QtWidgets.QLineEdit(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.lineEdit.sizePolicy().hasHeightForWidth())
        self.lineEdit.setSizePolicy(sizePolicy)
        self.lineEdit.setMinimumSize(QtCore.QSize(90, 22))
        self.lineEdit.setMaximumSize(QtCore.QSize(90, 22))
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 1, 1, 1, 1)
        self.lineEdit_2 = QtWidgets.QLineEdit(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.lineEdit_2.sizePolicy().hasHeightForWidth())
        self.lineEdit_2.setSizePolicy(sizePolicy)
        self.lineEdit_2.setMinimumSize(QtCore.QSize(90, 22))
        self.lineEdit_2.setMaximumSize(QtCore.QSize(90, 22))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.gridLayout.addWidget(self.lineEdit_2, 1, 2, 1, 1)
        self.comboBox_6 = QtWidgets.QComboBox(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.comboBox_6.sizePolicy().hasHeightForWidth())
        self.comboBox_6.setSizePolicy(sizePolicy)
        self.comboBox_6.setObjectName("comboBox_6")
        self.gridLayout.addWidget(self.comboBox_6, 1, 3, 1, 1)
        self.horizontalLayout_2.addLayout(self.gridLayout)
        spacerItem = QtWidgets.QSpacerItem(158, 20,
                                           QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.PB_query = QtWidgets.QPushButton(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.PB_query.sizePolicy().hasHeightForWidth())
        self.PB_query.setSizePolicy(sizePolicy)
        self.PB_query.setMinimumSize(QtCore.QSize(80, 24))
        self.PB_query.setMaximumSize(QtCore.QSize(80, 24))
        self.PB_query.setObjectName("PB_query")
        self.horizontalLayout.addWidget(self.PB_query)
        self.PB_edit = QtWidgets.QPushButton(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.PB_edit.sizePolicy().hasHeightForWidth())
        self.PB_edit.setSizePolicy(sizePolicy)
        self.PB_edit.setMinimumSize(QtCore.QSize(80, 24))
        self.PB_edit.setMaximumSize(QtCore.QSize(80, 24))
        self.PB_edit.setObjectName("PB_edit")
        self.horizontalLayout.addWidget(self.PB_edit)
        self.PB_export = QtWidgets.QPushButton(Query_Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.PB_export.sizePolicy().hasHeightForWidth())
        self.PB_export.setSizePolicy(sizePolicy)
        self.PB_export.setMinimumSize(QtCore.QSize(80, 24))
        self.PB_export.setMaximumSize(QtCore.QSize(80, 24))
        self.PB_export.setObjectName("PB_export")
        self.horizontalLayout.addWidget(self.PB_export)
        self.horizontalLayout_2.addLayout(self.horizontalLayout)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.pandastablewidget = DataTableWidget(Query_Form)
        self.pandastablewidget.setStyleSheet("")
        self.pandastablewidget.setObjectName("pandastablewidget")
        self.verticalLayout.addWidget(self.pandastablewidget)
        self.tabWidget = QtWidgets.QTabWidget(Query_Form)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tabWidget.addTab(self.tab, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.tabWidget.addTab(self.tab_4, "")
        self.verticalLayout.addWidget(self.tabWidget)
        self.verticalLayout.setStretch(1, 1)
        self.verticalLayout.setStretch(2, 1)

        self.retranslateUi(Query_Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Query_Form)
Esempio n. 26
0
class FileTableWindow(QtGui.QMainWindow, Ui_FileWindow):
    """
    A spreadsheet-like window that displays rows and columns
    of the source DataFrame. Menu actions in this window allow the user to make
    updates to the DataFrame and see the changes update in the view.
    """
    def __init__(self, model: DataFrameModel, df_manager, **kwargs):
        QtGui.QMainWindow.__init__(self, parent=kwargs.pop('parent', None))
        self.df_manager = df_manager
        self._df_model = None
        self._df_model_transposed = None
        self._view_transposed = False
        self._widget = DataTableWidget()
        self._widget.setModel(model)
        kwargs['parent'] = self
        self.setupUi(self)
        self.dialog_fields_edit = FieldsEditDialog(model, parent=self)
        self.dialog_export = DataFrameModelExportDialog(
            df_manager,
            filename=model.filePath,
            allow_multi_source=False,
            parent=self)
        self.dialog_split = SplitFileDialog(model, parent=self)
        self.dialog_analyze = FileAnalyzerDialog(model, parent=self)
        self.dialog_normalize = ColumnNormalizerDialog(model, parent=self)
        self.dialog_merge_purge = kwargs.pop(
            'merge_purge_dialog',
            MergePurgeDialog(
                df_manager,
                source_model=model,
            ))
        self.connect_actions()
        self.connect_icons()

    @property
    def widget(self):
        # Overrides the Ui_FileWindow.widget
        return self._widget

    @widget.setter
    def widget(self, x):
        # Prevent the Ui_FileWindow from overriding our widget.
        pass

    @property
    def df_model(self) -> DataFrameModel:
        return self.widget.model()

    @property
    def df(self):
        return self.df_model.dataFrame()

    def connect_actions(self):
        self.actionAnalyze.triggered.connect(self.dialog_analyze.show)
        self.actionDropNaN.triggered.connect(self.drop_nan)
        self.actionEditFields.triggered.connect(self.dialog_fields_edit.show)
        self.actionMergePurge.triggered.connect(self.dialog_merge_purge.show)
        self.actionNormalize.triggered.connect(self.dialog_normalize.show)
        self.actionSave.triggered.connect(self.save)
        self.actionSaveAs.triggered.connect(self.dialog_export.show)
        self.actionSplit.triggered.connect(self.dialog_split.show)
        self.actionTranspose.triggered.connect(self.transpose)
        self.dialog_export.btnBrowseSource.setVisible(False)
        # TODO: Make these actions do something then activate.
        self.actionExecuteScript.setVisible(False)
        self.actionSuppress.setVisible(False)
        self.actionDelete.setVisible(False)
        self.df_model.dataChanged.connect(self.sync)
        self.sync()

    def connect_icons(self):
        self.setWindowIcon(QtGui.QIcon(':/standard_icons/spreadsheet.png'))

    def transpose(self):
        """
        TODO: Give this functionality to the DataFrameModel
        :return:
        """
        rows = self.df_model.dataFrame().index.size
        if rows > 150:
            raise Exception("Max size to transpose is 150 rows to columns.")

        if self._df_model_transposed is None:
            df = pandatools.dataframe_transpose(self.df_model.dataFrame())
            self._df_model_transposed = DataFrameModel(dataFrame=df)
            self._df_model = self.df_model

        if self._view_transposed is True:
            self.widget.setModel(self._df_model)
            self._view_transposed = False
        else:
            self.widget.setModel(self._df_model_transposed)
            self._view_transposed = True

    def drop_nan(self):
        for c in self.df.columns:
            dtype = str(self.df[c].dtype)
            if 'float' in dtype:
                sum = self.df[c].sum()
                if sum == 0 or str(sum) == 'nan':
                    self.df.loc[:, c] = self.df.loc[:,
                                                    c].apply(lambda x: str(x))

            if str(self.df[c].dtype) == 'object':
                self.df.loc[:, c] = pandatools.series_blank_na(self.df.loc[:,
                                                                           c])
        self.df_model.dataChanged.emit()

    def sync(self):
        self.setWindowTitle("{}".format(self.df_model.filePath))
        self.dialog_export.comboBoxSource.setModel(
            create_standard_item_model([self.df_model.filePath]))
        self._df_model_transposed = None
        if self._df_model is not None:
            self.widget.setModel(self._df_model)

    def save(self):
        self.dialog_export.set_destination_path_from_source()
        self.dialog_export.export()
Esempio n. 27
0
class TestWidget(QtGui.QWidget):

    def __init__(self, parent=None):
        super(TestWidget, self).__init__(parent)
        #FIXME: Make resize adapt to users screen.
        self.resize(1680, 756)
        self.move(0, 0)

        self.df = pandas.DataFrame()
        self.dataModel = None

        #  init the data view's
        self.dataTableView = DataTableWidget(self)
        # self.dataTableView.setSortingEnabled(True)
        # self.dataTableView.setAlternatingRowColors(True)

        self.dataListView = QtGui.QListView(self)
        self.dataListView.setAlternatingRowColors(True)

        self.dataComboBox = QtGui.QComboBox(self)

        # make combobox to choose the model column for dataComboBox and dataListView
        self.chooseColumnComboBox = QtGui.QComboBox(self)

        self.buttonCsvData = QtGui.QPushButton("load csv data")
        self.buttonRandomData = QtGui.QPushButton("load random data")
        importDialog = CSVImportDialog(self)
        importDialog.load.connect(self.updateModel)
        self.buttonCsvData.clicked.connect(lambda: importDialog.show())
        self.buttonRandomData.clicked.connect(lambda: self.setDataFrame( getRandomData(rows=100, columns=100) ))

        self.exportDialog = CSVExportDialog(self)

        self.buttonCSVExport = QtGui.QPushButton("export to csv")
        self.buttonCSVExport.clicked.connect(self._exportModel)
        self.buttonLayout = QtGui.QHBoxLayout()
        self.buttonLayout.addWidget(self.buttonCsvData)
        self.buttonLayout.addWidget(self.buttonCSVExport)
        self.buttonLayout.addWidget(self.buttonRandomData)

        self.mainLayout = QtGui.QVBoxLayout()
        self.setLayout(self.mainLayout)
        self.mainLayout.addLayout(self.buttonLayout)

        self.mainLayout.addWidget(self.dataTableView)

        self.spinbox = QtGui.QSpinBox()
        self.mainLayout.addWidget(self.spinbox)
        self.spinbox.setMaximum(99999999999)
        self.spinbox.setValue(99999999999)

        self.rightLayout = QtGui.QVBoxLayout()
        self.chooseColumLayout = QtGui.QHBoxLayout()
        self.mainLayout.addLayout(self.rightLayout)
        self.rightLayout.addLayout(self.chooseColumLayout)
        self.chooseColumLayout.addWidget(QtGui.QLabel("Choose column:"))
        self.chooseColumLayout.addWidget(self.chooseColumnComboBox)
        self.rightLayout.addWidget(self.dataListView)
        self.rightLayout.addWidget(self.dataComboBox)

        self.tableViewColumnDtypes = QtGui.QTableView(self)
        self.rightLayout.addWidget(QtGui.QLabel('dtypes'))
        self.rightLayout.addWidget(self.tableViewColumnDtypes)
        self.buttonGoToColumn = QtGui.QPushButton("go to column")
        self.rightLayout.addWidget(self.buttonGoToColumn)
        self.buttonGoToColumn.clicked.connect(self.goToColumn)

        self.buttonSetFilter = QtGui.QPushButton("set filter")
        self.rightLayout.addWidget(self.buttonSetFilter)
        self.buttonSetFilter.clicked.connect(self.setFilter)
        self.buttonClearFilter = QtGui.QPushButton("clear filter")
        self.rightLayout.addWidget(self.buttonClearFilter)
        self.buttonClearFilter.clicked.connect(self.clearFilter)
        self.lineEditFilterCondition = QtGui.QLineEdit("freeSearch('am')")
        self.rightLayout.addWidget(self.lineEditFilterCondition)

        self.chooseColumnComboBox.currentIndexChanged.connect(self.setModelColumn)

        self.dataListView.mouseReleaseEvent = self.mouseReleaseEvent

        self.dropLineEdit = DropLineEdit("drop data from table here", self)
        self.rightLayout.addWidget(self.dropLineEdit)

        self.dropWidget = ComplexDropWidget(self)
        self.dropWidget.dropRecieved.connect(self.processDataDrops)
        self.rightLayout.addWidget(self.dropWidget)

    @Slot('QMimeData')
    def processDataDrops(self, mimeData):
        """if you have more complicated stuff to do and you want to match some models, might be possible like that"""
        mimeDataPayload = mimeData.data()
        if isinstance(mimeDataPayload, PandasCellPayload):
            if self.dataModel is not None:
                if hex(id(self.dataModel)) == mimeDataPayload.parentId:
                    self.dropWidget.setText("complex stuff done after drop event. {0}".format(mimeDataPayload.column))

    def setDataFrame(self, dataFrame):
        self.df = dataFrame
        dataModel = DataFrameModel()
        dataModel.setDataFrame(self.df)

        self.dataModel = dataModel

        self.dataListView.setModel(dataModel)
        self.dataTableView.setViewModel(dataModel)
        self.dataComboBox.setModel(dataModel)

        # self.dataTableView.resizeColumnsToContents()

        # create a simple item model for our choosing combobox
        columnModel = QtGui.QStandardItemModel()
        for column in self.df.columns:
            columnModel.appendRow(QtGui.QStandardItem(column))
        self.chooseColumnComboBox.setModel(columnModel)

        self.tableViewColumnDtypes.setModel(dataModel.columnDtypeModel())
        self.tableViewColumnDtypes.horizontalHeader().setDefaultSectionSize(200)
        self.tableViewColumnDtypes.setItemDelegateForColumn(1, DtypeComboDelegate(self.tableViewColumnDtypes))
        dataModel.changingDtypeFailed.connect(self.changeColumnValue)

    @Slot()
    def _exportModel(self):
        model = self.dataTableView.view().model()
        self.exportDialog.setExportModel(model)
        self.exportDialog.show()

    @Slot('QAbstractItemModel')
    def updateModel(self, model):
        self.dataModel = model
        self.dataListView.setModel(model)
        self.dataTableView.setViewModel(model)
        self.dataComboBox.setModel(model)

        self.tableViewColumnDtypes.setModel(model.columnDtypeModel())

    def setModelColumn(self, index):
        self.dataListView.setModelColumn(index)
        self.dataComboBox.setModelColumn(index)

    def goToColumn(self):
        print("go to column 7")
        index = self.dataTableView.view().model().index(7, 0)
        self.dataTableView.view().setCurrentIndex(index)

    def changeColumnValue(self, columnName, index, dtype):
        print("failed to change", columnName, "to", dtype)
        print(index.data(), index.isValid())
        self.dataTableView.view().setCurrentIndex(index)

    def setFilter(self):
        #filterIndex = eval(self.lineEditFilterCondition.text())
        search = DataSearch("Test", self.lineEditFilterCondition.text())
        self.dataTableView.view().model().setFilter(search)
        #raise NotImplementedError

    def clearFilter(self):
        self.dataTableView.view().model().clearFilter()
Esempio n. 28
0
class Main:
    def __init__(self):
        """ 初始化主界面 """
        self.ui = loadUi("UI/main.ui")
        self.ui.setWindowTitle("聚类系统")
        self.DataHelper = None
        self.ui.btn_choose_data.clicked.connect(self.choose_path)
        self.ui.btn_set_parameter.clicked.connect(self.set_parameter)

        self.ui.btn_spin.addItems(
            ["KMeans", "GMM", "DBSCAN", "OPTICS","BIRCH", "MeanShift", "CLIQUE"])
        self.ui.btn_run.clicked.connect(self.run)
        self.cluster = ClusterHelper()
        self.ui.btn_show_image.clicked.connect(self.show_image)

    def show_image(self):
        """ 展示聚类结果 """
        try:
            self.cluster.imshow()
        except:
            QMessageBox.about(self.ui, "展示失败", "请先训练你的聚类器")

    def choose_path(self):
        """ 选择数据集 """
        file_name = QtWidgets.QFileDialog.getOpenFileName(
            self.ui, "请选择你要打开数据的名字", "./data/", "Csv files(*.csv)")
        file_name = file_name[0]
        self.DataHelper = DataHelper(file_name)

        name = file_name.split("/")[-1]
        self.ui.ldata_name.setText(name)
        self.show_information()
        self.show_data()

    def show_information(self):
        """ 显示数据集的基本信息 """
        self.ui.ldata_shape.setText(str(self.DataHelper.shape))
        self.ui.ldata_class.setText(str(self.DataHelper.class_))

    def set_parameter(self):
        """ 设置分类器 """
        currentText = self.ui.btn_spin.currentText()
        self.newWindow = SecondWindow(algorithm=currentText)
        self.newWindow.btn_yes.clicked.connect(self.get_parameter)
        self.newWindow.show()

    def get_parameter(self):
        """ 获得参数信息 """
        self.newWindow.window_exit()

        self.ui.tmessage_show.setText(self.newWindow.message)
        currentText = self.ui.btn_spin.currentText()
        param_dict = [eval(line.split(":")[1])
                      for line in self.newWindow.message.split("\n")[1:-1]]
        self.cluster.set_Cluster(currentText, param_dict)

    def show_data(self):
        """
        展示读取进来的数据
        """
        self.widget = DataTableWidget(self.ui)
        model = DataFrameModel()
        model.setDataFrame(self.DataHelper.data)
        self.widget.setViewModel(model)
        self.widget.move(30, 200)
        self.widget.resize(350, 350)
        self.widget.show()

    def run(self):
        """ 运行聚类算法 """
        if(self.DataHelper == None):
            QMessageBox.about(self.ui, "运行失败", "请选择你的数据集")
        elif(self.cluster.cluster == None):
            QMessageBox.about(self.ui, "运行失败", "请初始化你的聚类器")
        else:
            self.cluster.fit(self.DataHelper.data)
            score = self.cluster.get_score()
            text = ""
            for item in score.items():
                text += item[0] + str(item[1]) + "\n"
            self.ui.t_ans.setText(text)
Esempio n. 29
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setAutoFillBackground(False)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_6 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_6.setObjectName("gridLayout_6")
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem, 1, 0, 1, 10)
        self.initDataButton = QtWidgets.QPushButton(self.centralwidget)
        self.initDataButton.setObjectName("initDataButton")
        self.gridLayout_6.addWidget(self.initDataButton, 2, 3, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(18, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem1, 2, 5, 1, 1)
        self.plotButton = QtWidgets.QPushButton(self.centralwidget)
        self.plotButton.setObjectName("plotButton")
        self.gridLayout_6.addWidget(self.plotButton, 2, 8, 1, 1)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tab.sizePolicy().hasHeightForWidth())
        self.tab.setSizePolicy(sizePolicy)
        self.tab.setObjectName("tab")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.tab)
        self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.formLayout = QtWidgets.QFormLayout()
        self.formLayout.setContentsMargins(10, -1, -1, 0)
        self.formLayout.setVerticalSpacing(0)
        self.formLayout.setObjectName("formLayout")
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.formLayout.setItem(0, QtWidgets.QFormLayout.SpanningRole,
                                spacerItem2)
        self.pushButton_openfile = QtWidgets.QPushButton(self.tab)
        self.pushButton_openfile.setObjectName("pushButton_openfile")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole,
                                  self.pushButton_openfile)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.formLayout.setItem(1, QtWidgets.QFormLayout.FieldRole,
                                spacerItem3)
        spacerItem4 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.formLayout.setItem(2, QtWidgets.QFormLayout.SpanningRole,
                                spacerItem4)
        self.gridLayout_3.addLayout(self.formLayout, 0, 0, 1, 1)
        self.formLayout_2 = QtWidgets.QFormLayout()
        self.formLayout_2.setObjectName("formLayout_2")
        self.label_4 = QtWidgets.QLabel(self.tab)
        self.label_4.setObjectName("label_4")
        self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole,
                                    self.label_4)
        self.dataDescTable = QtWidgets.QTableWidget(self.tab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.dataDescTable.sizePolicy().hasHeightForWidth())
        self.dataDescTable.setSizePolicy(sizePolicy)
        self.dataDescTable.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.dataDescTable.setEditTriggers(
            QtWidgets.QAbstractItemView.NoEditTriggers)
        self.dataDescTable.setShowGrid(True)
        self.dataDescTable.setWordWrap(False)
        self.dataDescTable.setRowCount(0)
        self.dataDescTable.setObjectName("dataDescTable")
        self.dataDescTable.setColumnCount(0)
        self.dataDescTable.horizontalHeader().setDefaultSectionSize(50)
        self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.SpanningRole,
                                    self.dataDescTable)
        self.gridLayout_3.addLayout(self.formLayout_2, 1, 0, 1, 1)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.gridLayout = QtWidgets.QGridLayout(self.tab_2)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.groupBox_2 = QtWidgets.QGroupBox(self.tab_2)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_2)
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.radioButton_ignorenan = QtWidgets.QRadioButton(self.groupBox_2)
        self.radioButton_ignorenan.setChecked(True)
        self.radioButton_ignorenan.setObjectName("radioButton_ignorenan")
        self.horizontalLayout_3.addWidget(self.radioButton_ignorenan)
        self.radioButton_delnan = QtWidgets.QRadioButton(self.groupBox_2)
        self.radioButton_delnan.setChecked(False)
        self.radioButton_delnan.setObjectName("radioButton_delnan")
        self.horizontalLayout_3.addWidget(self.radioButton_delnan)
        self.radioButton_fillnan = QtWidgets.QRadioButton(self.groupBox_2)
        self.radioButton_fillnan.setObjectName("radioButton_fillnan")
        self.horizontalLayout_3.addWidget(self.radioButton_fillnan)
        self.gridLayout_5.addLayout(self.horizontalLayout_3, 0, 0, 1, 6)
        self.checkNaNButton = QtWidgets.QPushButton(self.groupBox_2)
        self.checkNaNButton.setObjectName("checkNaNButton")
        self.gridLayout_5.addWidget(self.checkNaNButton, 1, 0, 1, 1)
        self.repealButton_nan = QtWidgets.QPushButton(self.groupBox_2)
        self.repealButton_nan.setObjectName("repealButton_nan")
        self.gridLayout_5.addWidget(self.repealButton_nan, 1, 4, 1, 1)
        spacerItem5 = QtWidgets.QSpacerItem(146, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem5, 1, 5, 1, 1)
        self.okButton_nan = QtWidgets.QPushButton(self.groupBox_2)
        self.okButton_nan.setObjectName("okButton_nan")
        self.gridLayout_5.addWidget(self.okButton_nan, 1, 2, 1, 1)
        spacerItem6 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem6, 1, 1, 1, 1)
        spacerItem7 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem7, 1, 3, 1, 1)
        self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1)
        self.groupBox_3 = QtWidgets.QGroupBox(self.tab_2)
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_3)
        self.gridLayout_4.setObjectName("gridLayout_4")
        spacerItem8 = QtWidgets.QSpacerItem(232, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem8, 3, 5, 1, 1)
        self.initButton_nondim = QtWidgets.QPushButton(self.groupBox_3)
        self.initButton_nondim.setObjectName("initButton_nondim")
        self.gridLayout_4.addWidget(self.initButton_nondim, 3, 4, 1, 1)
        self.okButton_nondim = QtWidgets.QPushButton(self.groupBox_3)
        self.okButton_nondim.setObjectName("okButton_nondim")
        self.gridLayout_4.addWidget(self.okButton_nondim, 3, 0, 1, 1)
        self.repealButton_nondim = QtWidgets.QPushButton(self.groupBox_3)
        self.repealButton_nondim.setObjectName("repealButton_nondim")
        self.gridLayout_4.addWidget(self.repealButton_nondim, 3, 2, 1, 1)
        spacerItem9 = QtWidgets.QSpacerItem(74, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem9, 3, 1, 1, 1)
        spacerItem10 = QtWidgets.QSpacerItem(73, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem10, 3, 3, 1, 1)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.radioButton_ignorenondim = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_ignorenondim.setObjectName("radioButton_ignorenondim")
        self.horizontalLayout_4.addWidget(self.radioButton_ignorenondim)
        self.radioButton_zstandard = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_zstandard.setChecked(True)
        self.radioButton_zstandard.setObjectName("radioButton_zstandard")
        self.horizontalLayout_4.addWidget(self.radioButton_zstandard)
        self.radioButton_01standard = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_01standard.setObjectName("radioButton_01standard")
        self.horizontalLayout_4.addWidget(self.radioButton_01standard)
        self.radioButton_normalizer = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_normalizer.setObjectName("radioButton_normalizer")
        self.horizontalLayout_4.addWidget(self.radioButton_normalizer)
        self.gridLayout_4.addLayout(self.horizontalLayout_4, 0, 0, 1, 6)
        self.gridLayout.addWidget(self.groupBox_3, 1, 0, 1, 1)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.gridLayout_8 = QtWidgets.QGridLayout(self.tab_3)
        self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_8.setObjectName("gridLayout_8")
        self.groupBox_2D = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox_2D.setEnabled(True)
        self.groupBox_2D.setCheckable(False)
        self.groupBox_2D.setObjectName("groupBox_2D")
        self.radioButton_2Dline = QtWidgets.QRadioButton(self.groupBox_2D)
        self.radioButton_2Dline.setGeometry(QtCore.QRect(10, 22, 59, 16))
        self.radioButton_2Dline.setChecked(True)
        self.radioButton_2Dline.setObjectName("radioButton_2Dline")
        self.radioButton_2Dhist = QtWidgets.QRadioButton(self.groupBox_2D)
        self.radioButton_2Dhist.setGeometry(QtCore.QRect(108, 22, 59, 16))
        self.radioButton_2Dhist.setObjectName("radioButton_2Dhist")
        self.radioButton_2Dscatter = QtWidgets.QRadioButton(self.groupBox_2D)
        self.radioButton_2Dscatter.setGeometry(QtCore.QRect(10, 44, 59, 16))
        self.radioButton_2Dscatter.setObjectName("radioButton_2Dscatter")
        self.checkBox_histfit = QtWidgets.QCheckBox(self.groupBox_2D)
        self.checkBox_histfit.setEnabled(False)
        self.checkBox_histfit.setGeometry(QtCore.QRect(108, 44, 71, 16))
        self.checkBox_histfit.setObjectName("checkBox_histfit")
        self.gridLayout_8.addWidget(self.groupBox_2D, 1, 0, 1, 1)
        self.groupBox_fit = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox_fit.setEnabled(False)
        self.groupBox_fit.setObjectName("groupBox_fit")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_fit)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label_9 = QtWidgets.QLabel(self.groupBox_fit)
        self.label_9.setObjectName("label_9")
        self.gridLayout_2.addWidget(self.label_9, 0, 0, 1, 1)
        self.comboBox_fitmethod = QtWidgets.QComboBox(self.groupBox_fit)
        self.comboBox_fitmethod.setObjectName("comboBox_fitmethod")
        self.comboBox_fitmethod.addItem("")
        self.comboBox_fitmethod.addItem("")
        self.comboBox_fitmethod.addItem("")
        self.gridLayout_2.addWidget(self.comboBox_fitmethod, 1, 1, 1, 1)
        self.comboBox_2d_n = QtWidgets.QComboBox(self.groupBox_fit)
        self.comboBox_2d_n.setEnabled(False)
        self.comboBox_2d_n.setEditable(True)
        self.comboBox_2d_n.setObjectName("comboBox_2d_n")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.gridLayout_2.addWidget(self.comboBox_2d_n, 2, 1, 1, 1)
        self.label_10 = QtWidgets.QLabel(self.groupBox_fit)
        self.label_10.setObjectName("label_10")
        self.gridLayout_2.addWidget(self.label_10, 1, 0, 1, 1)
        self.label_11 = QtWidgets.QLabel(self.groupBox_fit)
        self.label_11.setObjectName("label_11")
        self.gridLayout_2.addWidget(self.label_11, 2, 0, 1, 1)
        self.checkBox_fit = QtWidgets.QCheckBox(self.groupBox_fit)
        self.checkBox_fit.setEnabled(False)
        self.checkBox_fit.setText("")
        self.checkBox_fit.setObjectName("checkBox_fit")
        self.gridLayout_2.addWidget(self.checkBox_fit, 0, 1, 1, 1)
        self.gridLayout_8.addWidget(self.groupBox_fit, 1, 1, 2, 1)
        self.groupBox_3D = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox_3D.setEnabled(False)
        self.groupBox_3D.setObjectName("groupBox_3D")
        self.radioButton_3Dline = QtWidgets.QRadioButton(self.groupBox_3D)
        self.radioButton_3Dline.setGeometry(QtCore.QRect(10, 37, 59, 16))
        self.radioButton_3Dline.setChecked(True)
        self.radioButton_3Dline.setObjectName("radioButton_3Dline")
        self.radioButton_3Dsurface = QtWidgets.QRadioButton(self.groupBox_3D)
        self.radioButton_3Dsurface.setGeometry(QtCore.QRect(147, 37, 59, 16))
        self.radioButton_3Dsurface.setObjectName("radioButton_3Dsurface")
        self.radioButton_3Dscatter = QtWidgets.QRadioButton(self.groupBox_3D)
        self.radioButton_3Dscatter.setGeometry(QtCore.QRect(79, 37, 59, 16))
        self.radioButton_3Dscatter.setObjectName("radioButton_3Dscatter")
        self.gridLayout_8.addWidget(self.groupBox_3D, 2, 0, 1, 1)
        self.groupBox = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout_7 = QtWidgets.QGridLayout(self.groupBox)
        self.gridLayout_7.setObjectName("gridLayout_7")
        self.lineEdit_datax = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_datax.setObjectName("lineEdit_datax")
        self.gridLayout_7.addWidget(self.lineEdit_datax, 1, 1, 1, 1)
        self.label_8 = QtWidgets.QLabel(self.groupBox)
        self.label_8.setObjectName("label_8")
        self.gridLayout_7.addWidget(self.label_8, 1, 4, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.groupBox)
        self.label_6.setInputMethodHints(QtCore.Qt.ImhNone)
        self.label_6.setScaledContents(False)
        self.label_6.setWordWrap(True)
        self.label_6.setObjectName("label_6")
        self.gridLayout_7.addWidget(self.label_6, 0, 0, 1, 6)
        self.lineEdit_dataz = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_dataz.setEnabled(False)
        self.lineEdit_dataz.setObjectName("lineEdit_dataz")
        self.gridLayout_7.addWidget(self.lineEdit_dataz, 1, 5, 1, 1)
        self.lineEdit_datay = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_datay.setObjectName("lineEdit_datay")
        self.gridLayout_7.addWidget(self.lineEdit_datay, 1, 3, 1, 1)
        self.label_7 = QtWidgets.QLabel(self.groupBox)
        self.label_7.setObjectName("label_7")
        self.gridLayout_7.addWidget(self.label_7, 1, 2, 1, 1)
        self.label_5 = QtWidgets.QLabel(self.groupBox)
        self.label_5.setObjectName("label_5")
        self.gridLayout_7.addWidget(self.label_5, 1, 0, 1, 1)
        self.gridLayout_8.addWidget(self.groupBox, 3, 0, 1, 2)
        self.groupBox_6 = QtWidgets.QGroupBox(self.tab_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox_6.sizePolicy().hasHeightForWidth())
        self.groupBox_6.setSizePolicy(sizePolicy)
        self.groupBox_6.setObjectName("groupBox_6")
        self.gridLayout_11 = QtWidgets.QGridLayout(self.groupBox_6)
        self.gridLayout_11.setObjectName("gridLayout_11")
        self.radioButton_2D = QtWidgets.QRadioButton(self.groupBox_6)
        self.radioButton_2D.setChecked(True)
        self.radioButton_2D.setObjectName("radioButton_2D")
        self.gridLayout_11.addWidget(self.radioButton_2D, 0, 0, 1, 1)
        self.radioButton_3D = QtWidgets.QRadioButton(self.groupBox_6)
        self.radioButton_3D.setObjectName("radioButton_3D")
        self.gridLayout_11.addWidget(self.radioButton_3D, 0, 1, 1, 1)
        self.gridLayout_8.addWidget(self.groupBox_6, 0, 0, 1, 2)
        self.tabWidget.addTab(self.tab_3, "")
        self.gridLayout_6.addWidget(self.tabWidget, 0, 0, 1, 10)
        self.saveDataButton = QtWidgets.QPushButton(self.centralwidget)
        self.saveDataButton.setObjectName("saveDataButton")
        self.gridLayout_6.addWidget(self.saveDataButton, 2, 6, 1, 1)
        spacerItem11 = QtWidgets.QSpacerItem(20, 40,
                                             QtWidgets.QSizePolicy.Minimum,
                                             QtWidgets.QSizePolicy.Expanding)
        self.gridLayout_6.addItem(spacerItem11, 0, 10, 4, 1)
        spacerItem12 = QtWidgets.QSpacerItem(18, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem12, 2, 0, 1, 1)
        spacerItem13 = QtWidgets.QSpacerItem(18, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem13, 2, 7, 1, 1)
        spacerItem14 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem14, 3, 0, 1, 10)
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.textBrowser.sizePolicy().hasHeightForWidth())
        self.textBrowser.setSizePolicy(sizePolicy)
        self.textBrowser.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow)
        self.textBrowser.setReadOnly(True)
        self.textBrowser.setObjectName("textBrowser")
        self.gridLayout_6.addWidget(self.textBrowser, 4, 0, 1, 12)
        spacerItem15 = QtWidgets.QSpacerItem(17, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem15, 2, 9, 1, 1)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.filenameLabel = QtWidgets.QLabel(self.centralwidget)
        self.filenameLabel.setText("")
        self.filenameLabel.setObjectName("filenameLabel")
        self.horizontalLayout_2.addWidget(self.filenameLabel)
        spacerItem16 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem16)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.horizontalLayout_2.addWidget(self.label)
        self.fileformatLabel = QtWidgets.QLabel(self.centralwidget)
        self.fileformatLabel.setText("")
        self.fileformatLabel.setObjectName("fileformatLabel")
        self.horizontalLayout_2.addWidget(self.fileformatLabel)
        spacerItem17 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem17)
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_2.addWidget(self.label_3)
        self.dataDimLabel = QtWidgets.QLabel(self.centralwidget)
        self.dataDimLabel.setText("")
        self.dataDimLabel.setObjectName("dataDimLabel")
        self.horizontalLayout_2.addWidget(self.dataDimLabel)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.tableWidget = DataTableWidget(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tableWidget.sizePolicy().hasHeightForWidth())
        self.tableWidget.setSizePolicy(sizePolicy)
        self.tableWidget.setObjectName("tableWidget")
        self.verticalLayout.addWidget(self.tableWidget)
        self.gridLayout_6.addLayout(self.verticalLayout, 0, 11, 4, 1)
        self.pushButton_refresh = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_refresh.setObjectName("pushButton_refresh")
        self.gridLayout_6.addWidget(self.pushButton_refresh, 2, 1, 1, 1)
        spacerItem18 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem18, 2, 2, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.menubar.addAction(self.menu.menuAction())

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.setTabOrder(self.tabWidget, self.pushButton_openfile)
        MainWindow.setTabOrder(self.pushButton_openfile,
                               self.pushButton_refresh)
        MainWindow.setTabOrder(self.pushButton_refresh, self.initDataButton)
        MainWindow.setTabOrder(self.initDataButton, self.saveDataButton)
        MainWindow.setTabOrder(self.saveDataButton, self.plotButton)
        MainWindow.setTabOrder(self.plotButton, self.radioButton_ignorenan)
        MainWindow.setTabOrder(self.radioButton_ignorenan,
                               self.radioButton_delnan)
        MainWindow.setTabOrder(self.radioButton_delnan,
                               self.radioButton_fillnan)
        MainWindow.setTabOrder(self.radioButton_fillnan, self.checkNaNButton)
        MainWindow.setTabOrder(self.checkNaNButton, self.okButton_nan)
        MainWindow.setTabOrder(self.okButton_nan, self.repealButton_nan)
        MainWindow.setTabOrder(self.repealButton_nan,
                               self.radioButton_ignorenondim)
        MainWindow.setTabOrder(self.radioButton_ignorenondim,
                               self.radioButton_zstandard)
        MainWindow.setTabOrder(self.radioButton_zstandard,
                               self.radioButton_01standard)
        MainWindow.setTabOrder(self.radioButton_01standard,
                               self.radioButton_normalizer)
        MainWindow.setTabOrder(self.radioButton_normalizer,
                               self.okButton_nondim)
        MainWindow.setTabOrder(self.okButton_nondim, self.radioButton_2D)
        MainWindow.setTabOrder(self.radioButton_2D, self.radioButton_3D)
        MainWindow.setTabOrder(self.radioButton_3D, self.radioButton_2Dline)
        MainWindow.setTabOrder(self.radioButton_2Dline,
                               self.radioButton_3Dline)
        MainWindow.setTabOrder(self.radioButton_3Dline, self.lineEdit_datax)
        MainWindow.setTabOrder(self.lineEdit_datax, self.lineEdit_datay)
        MainWindow.setTabOrder(self.lineEdit_datay, self.lineEdit_dataz)
        MainWindow.setTabOrder(self.lineEdit_dataz, self.textBrowser)
Esempio n. 30
0
from qtpandas.excepthook import excepthook

# Use QtGui from the compat module to take care if correct sip version, etc.
from qtpandas.compat import QtGui
from qtpandas.models.DataFrameModel import DataFrameModel
from qtpandas.views.DataTableView import DataTableWidget
# from qtpandas.views._ui import icons_rc

sys.excepthook = excepthook

# Setup a new empty model
model = DataFrameModel()

# Setup an application and create a table view widget
app = QtGui.QApplication([])
widget = DataTableWidget()
widget.resize(800, 600)
widget.show()
# Asign the created model"""
widget.setViewModel(model)

# Create some test data
data = {
    'A': [10, 11, 12],
    'B': [20, 21, 22],
    'C': ['Peter Pan', 'Cpt. Hook', 'Tinkerbell']
}
df = pandas.DataFrame(data)
# Convert the column to the numpy.int8 datatype to test the delegates in the
# table int8 is limited to -128-127
Esempio n. 31
0
class ResultWindow(QWidget):
    def __init__(self):
        super(self.__class__, self).__init__()
        self.setup_ui()

    def setup_ui(self):
        self.setWindowTitle("查詢結果")
        self.setFont(PyQt5.QtGui.QFont("Times New Roman", 11))

        self.buttonCopy = QPushButton("複製查詢結果 (Ctrl+C)")
        self.buttonCopy.clicked.connect(self.copy)
        self.labelInfo = QLabel("")
        self.shortcut = QShortcut(PyQt5.QtGui.QKeySequence("Ctrl+C"), self)
        self.shortcut.activated.connect(self.copy)

        self.formLayout = QFormLayout()
        self.formLayout.addRow(self.buttonCopy, self.labelInfo)

        self.widget = DataTableWidget()
        self.widget.setButtonsVisible(False)
        self.widget.setMinimumSize(600, 600)

        self.vbox = QVBoxLayout()
        self.vbox.addLayout(self.formLayout)
        self.vbox.addWidget(self.widget)
        self.setLayout(self.vbox)

    def update(self, data):
        self.df = data
        self.labelInfo.setText("")
        self.model = DataFrameModel()

        self.widget.resize(self.widget.sizeHint())
        self.widget.show()
        self.widget.setViewModel(self.model)
        self.model.setDataFrame(data)

    def copy(self):
        count = 0
        indexes = self.widget.tableView.selectionModel().selectedRows()
        if len(indexes) > 0:
            rows = [index.row() for index in indexes]
            count = len(indexes)
        else:
            rows = [i for i in range(self.widget.tableView.model().rowCount())]
            count = self.widget.tableView.model().rowCount()
        s = ''
        for i in rows:
            r = self.df.iloc[[i]]
            for v in r.values[0].astype(str):
                s += (v + '\t')
            s = s[:-1] + '\n'
        pyperclip.copy(s[:-1])
        self.labelInfo.setText(str(count) + " 筆資料已複製至剪貼簿")
Esempio n. 32
0
    def __init__(self, parent=None):
        super(TestWidget, self).__init__(parent)
        #FIXME: Make resize adapt to users screen.
        self.resize(1680, 756)
        self.move(0, 0)

        self.df = pandas.DataFrame()
        self.dataModel = None

        #  init the data view's
        self.dataTableView = DataTableWidget(self)
        # self.dataTableView.setSortingEnabled(True)
        # self.dataTableView.setAlternatingRowColors(True)

        self.dataListView = QtGui.QListView(self)
        self.dataListView.setAlternatingRowColors(True)

        self.dataComboBox = QtGui.QComboBox(self)

        # make combobox to choose the model column for dataComboBox and dataListView
        self.chooseColumnComboBox = QtGui.QComboBox(self)

        self.buttonCsvData = QtGui.QPushButton("load csv data")
        self.buttonRandomData = QtGui.QPushButton("load random data")
        importDialog = CSVImportDialog(self)
        importDialog.load.connect(self.updateModel)
        self.buttonCsvData.clicked.connect(lambda: importDialog.show())
        self.buttonRandomData.clicked.connect(lambda: self.setDataFrame( getRandomData(rows=100, columns=100) ))

        self.exportDialog = CSVExportDialog(self)

        self.buttonCSVExport = QtGui.QPushButton("export to csv")
        self.buttonCSVExport.clicked.connect(self._exportModel)
        self.buttonLayout = QtGui.QHBoxLayout()
        self.buttonLayout.addWidget(self.buttonCsvData)
        self.buttonLayout.addWidget(self.buttonCSVExport)
        self.buttonLayout.addWidget(self.buttonRandomData)

        self.mainLayout = QtGui.QVBoxLayout()
        self.setLayout(self.mainLayout)
        self.mainLayout.addLayout(self.buttonLayout)

        self.mainLayout.addWidget(self.dataTableView)

        self.spinbox = QtGui.QSpinBox()
        self.mainLayout.addWidget(self.spinbox)
        self.spinbox.setMaximum(99999999999)
        self.spinbox.setValue(99999999999)

        self.rightLayout = QtGui.QVBoxLayout()
        self.chooseColumLayout = QtGui.QHBoxLayout()
        self.mainLayout.addLayout(self.rightLayout)
        self.rightLayout.addLayout(self.chooseColumLayout)
        self.chooseColumLayout.addWidget(QtGui.QLabel("Choose column:"))
        self.chooseColumLayout.addWidget(self.chooseColumnComboBox)
        self.rightLayout.addWidget(self.dataListView)
        self.rightLayout.addWidget(self.dataComboBox)

        self.tableViewColumnDtypes = QtGui.QTableView(self)
        self.rightLayout.addWidget(QtGui.QLabel('dtypes'))
        self.rightLayout.addWidget(self.tableViewColumnDtypes)
        self.buttonGoToColumn = QtGui.QPushButton("go to column")
        self.rightLayout.addWidget(self.buttonGoToColumn)
        self.buttonGoToColumn.clicked.connect(self.goToColumn)

        self.buttonSetFilter = QtGui.QPushButton("set filter")
        self.rightLayout.addWidget(self.buttonSetFilter)
        self.buttonSetFilter.clicked.connect(self.setFilter)
        self.buttonClearFilter = QtGui.QPushButton("clear filter")
        self.rightLayout.addWidget(self.buttonClearFilter)
        self.buttonClearFilter.clicked.connect(self.clearFilter)
        self.lineEditFilterCondition = QtGui.QLineEdit("freeSearch('am')")
        self.rightLayout.addWidget(self.lineEditFilterCondition)

        self.chooseColumnComboBox.currentIndexChanged.connect(self.setModelColumn)

        self.dataListView.mouseReleaseEvent = self.mouseReleaseEvent

        self.dropLineEdit = DropLineEdit("drop data from table here", self)
        self.rightLayout.addWidget(self.dropLineEdit)

        self.dropWidget = ComplexDropWidget(self)
        self.dropWidget.dropRecieved.connect(self.processDataDrops)
        self.rightLayout.addWidget(self.dropWidget)
Esempio n. 33
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setAutoFillBackground(False)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_6 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_6.setObjectName("gridLayout_6")
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem, 1, 0, 1, 10)
        self.initDataButton = QtWidgets.QPushButton(self.centralwidget)
        self.initDataButton.setObjectName("initDataButton")
        self.gridLayout_6.addWidget(self.initDataButton, 2, 3, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(18, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem1, 2, 5, 1, 1)
        self.plotButton = QtWidgets.QPushButton(self.centralwidget)
        self.plotButton.setObjectName("plotButton")
        self.gridLayout_6.addWidget(self.plotButton, 2, 8, 1, 1)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tab.sizePolicy().hasHeightForWidth())
        self.tab.setSizePolicy(sizePolicy)
        self.tab.setObjectName("tab")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.tab)
        self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.formLayout = QtWidgets.QFormLayout()
        self.formLayout.setContentsMargins(10, -1, -1, 0)
        self.formLayout.setVerticalSpacing(0)
        self.formLayout.setObjectName("formLayout")
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.formLayout.setItem(0, QtWidgets.QFormLayout.SpanningRole,
                                spacerItem2)
        self.pushButton_openfile = QtWidgets.QPushButton(self.tab)
        self.pushButton_openfile.setObjectName("pushButton_openfile")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole,
                                  self.pushButton_openfile)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.formLayout.setItem(1, QtWidgets.QFormLayout.FieldRole,
                                spacerItem3)
        spacerItem4 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.formLayout.setItem(2, QtWidgets.QFormLayout.SpanningRole,
                                spacerItem4)
        self.gridLayout_3.addLayout(self.formLayout, 0, 0, 1, 1)
        self.formLayout_2 = QtWidgets.QFormLayout()
        self.formLayout_2.setObjectName("formLayout_2")
        self.label_4 = QtWidgets.QLabel(self.tab)
        self.label_4.setObjectName("label_4")
        self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole,
                                    self.label_4)
        self.dataDescTable = QtWidgets.QTableWidget(self.tab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.dataDescTable.sizePolicy().hasHeightForWidth())
        self.dataDescTable.setSizePolicy(sizePolicy)
        self.dataDescTable.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.dataDescTable.setEditTriggers(
            QtWidgets.QAbstractItemView.NoEditTriggers)
        self.dataDescTable.setShowGrid(True)
        self.dataDescTable.setWordWrap(False)
        self.dataDescTable.setRowCount(0)
        self.dataDescTable.setObjectName("dataDescTable")
        self.dataDescTable.setColumnCount(0)
        self.dataDescTable.horizontalHeader().setDefaultSectionSize(50)
        self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.SpanningRole,
                                    self.dataDescTable)
        self.gridLayout_3.addLayout(self.formLayout_2, 1, 0, 1, 1)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.gridLayout = QtWidgets.QGridLayout(self.tab_2)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.groupBox_2 = QtWidgets.QGroupBox(self.tab_2)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_2)
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.radioButton_ignorenan = QtWidgets.QRadioButton(self.groupBox_2)
        self.radioButton_ignorenan.setChecked(True)
        self.radioButton_ignorenan.setObjectName("radioButton_ignorenan")
        self.horizontalLayout_3.addWidget(self.radioButton_ignorenan)
        self.radioButton_delnan = QtWidgets.QRadioButton(self.groupBox_2)
        self.radioButton_delnan.setChecked(False)
        self.radioButton_delnan.setObjectName("radioButton_delnan")
        self.horizontalLayout_3.addWidget(self.radioButton_delnan)
        self.radioButton_fillnan = QtWidgets.QRadioButton(self.groupBox_2)
        self.radioButton_fillnan.setObjectName("radioButton_fillnan")
        self.horizontalLayout_3.addWidget(self.radioButton_fillnan)
        self.gridLayout_5.addLayout(self.horizontalLayout_3, 0, 0, 1, 6)
        self.checkNaNButton = QtWidgets.QPushButton(self.groupBox_2)
        self.checkNaNButton.setObjectName("checkNaNButton")
        self.gridLayout_5.addWidget(self.checkNaNButton, 1, 0, 1, 1)
        self.repealButton_nan = QtWidgets.QPushButton(self.groupBox_2)
        self.repealButton_nan.setObjectName("repealButton_nan")
        self.gridLayout_5.addWidget(self.repealButton_nan, 1, 4, 1, 1)
        spacerItem5 = QtWidgets.QSpacerItem(146, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem5, 1, 5, 1, 1)
        self.okButton_nan = QtWidgets.QPushButton(self.groupBox_2)
        self.okButton_nan.setObjectName("okButton_nan")
        self.gridLayout_5.addWidget(self.okButton_nan, 1, 2, 1, 1)
        spacerItem6 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem6, 1, 1, 1, 1)
        spacerItem7 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem7, 1, 3, 1, 1)
        self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1)
        self.groupBox_3 = QtWidgets.QGroupBox(self.tab_2)
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_3)
        self.gridLayout_4.setObjectName("gridLayout_4")
        spacerItem8 = QtWidgets.QSpacerItem(232, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem8, 3, 5, 1, 1)
        self.initButton_nondim = QtWidgets.QPushButton(self.groupBox_3)
        self.initButton_nondim.setObjectName("initButton_nondim")
        self.gridLayout_4.addWidget(self.initButton_nondim, 3, 4, 1, 1)
        self.okButton_nondim = QtWidgets.QPushButton(self.groupBox_3)
        self.okButton_nondim.setObjectName("okButton_nondim")
        self.gridLayout_4.addWidget(self.okButton_nondim, 3, 0, 1, 1)
        self.repealButton_nondim = QtWidgets.QPushButton(self.groupBox_3)
        self.repealButton_nondim.setObjectName("repealButton_nondim")
        self.gridLayout_4.addWidget(self.repealButton_nondim, 3, 2, 1, 1)
        spacerItem9 = QtWidgets.QSpacerItem(74, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem9, 3, 1, 1, 1)
        spacerItem10 = QtWidgets.QSpacerItem(73, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem10, 3, 3, 1, 1)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.radioButton_ignorenondim = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_ignorenondim.setObjectName("radioButton_ignorenondim")
        self.horizontalLayout_4.addWidget(self.radioButton_ignorenondim)
        self.radioButton_zstandard = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_zstandard.setChecked(True)
        self.radioButton_zstandard.setObjectName("radioButton_zstandard")
        self.horizontalLayout_4.addWidget(self.radioButton_zstandard)
        self.radioButton_01standard = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_01standard.setObjectName("radioButton_01standard")
        self.horizontalLayout_4.addWidget(self.radioButton_01standard)
        self.radioButton_normalizer = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_normalizer.setObjectName("radioButton_normalizer")
        self.horizontalLayout_4.addWidget(self.radioButton_normalizer)
        self.gridLayout_4.addLayout(self.horizontalLayout_4, 0, 0, 1, 6)
        self.gridLayout.addWidget(self.groupBox_3, 1, 0, 1, 1)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.gridLayout_8 = QtWidgets.QGridLayout(self.tab_3)
        self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_8.setObjectName("gridLayout_8")
        self.groupBox_2D = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox_2D.setEnabled(True)
        self.groupBox_2D.setCheckable(False)
        self.groupBox_2D.setObjectName("groupBox_2D")
        self.radioButton_2Dline = QtWidgets.QRadioButton(self.groupBox_2D)
        self.radioButton_2Dline.setGeometry(QtCore.QRect(10, 22, 59, 16))
        self.radioButton_2Dline.setChecked(True)
        self.radioButton_2Dline.setObjectName("radioButton_2Dline")
        self.radioButton_2Dhist = QtWidgets.QRadioButton(self.groupBox_2D)
        self.radioButton_2Dhist.setGeometry(QtCore.QRect(108, 22, 59, 16))
        self.radioButton_2Dhist.setObjectName("radioButton_2Dhist")
        self.radioButton_2Dscatter = QtWidgets.QRadioButton(self.groupBox_2D)
        self.radioButton_2Dscatter.setGeometry(QtCore.QRect(10, 44, 59, 16))
        self.radioButton_2Dscatter.setObjectName("radioButton_2Dscatter")
        self.checkBox_histfit = QtWidgets.QCheckBox(self.groupBox_2D)
        self.checkBox_histfit.setEnabled(False)
        self.checkBox_histfit.setGeometry(QtCore.QRect(108, 44, 71, 16))
        self.checkBox_histfit.setObjectName("checkBox_histfit")
        self.gridLayout_8.addWidget(self.groupBox_2D, 1, 0, 1, 1)
        self.groupBox_fit = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox_fit.setEnabled(False)
        self.groupBox_fit.setObjectName("groupBox_fit")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_fit)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label_9 = QtWidgets.QLabel(self.groupBox_fit)
        self.label_9.setObjectName("label_9")
        self.gridLayout_2.addWidget(self.label_9, 0, 0, 1, 1)
        self.comboBox_fitmethod = QtWidgets.QComboBox(self.groupBox_fit)
        self.comboBox_fitmethod.setObjectName("comboBox_fitmethod")
        self.comboBox_fitmethod.addItem("")
        self.comboBox_fitmethod.addItem("")
        self.comboBox_fitmethod.addItem("")
        self.gridLayout_2.addWidget(self.comboBox_fitmethod, 1, 1, 1, 1)
        self.comboBox_2d_n = QtWidgets.QComboBox(self.groupBox_fit)
        self.comboBox_2d_n.setEnabled(False)
        self.comboBox_2d_n.setEditable(True)
        self.comboBox_2d_n.setObjectName("comboBox_2d_n")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.comboBox_2d_n.addItem("")
        self.gridLayout_2.addWidget(self.comboBox_2d_n, 2, 1, 1, 1)
        self.label_10 = QtWidgets.QLabel(self.groupBox_fit)
        self.label_10.setObjectName("label_10")
        self.gridLayout_2.addWidget(self.label_10, 1, 0, 1, 1)
        self.label_11 = QtWidgets.QLabel(self.groupBox_fit)
        self.label_11.setObjectName("label_11")
        self.gridLayout_2.addWidget(self.label_11, 2, 0, 1, 1)
        self.checkBox_fit = QtWidgets.QCheckBox(self.groupBox_fit)
        self.checkBox_fit.setEnabled(False)
        self.checkBox_fit.setText("")
        self.checkBox_fit.setObjectName("checkBox_fit")
        self.gridLayout_2.addWidget(self.checkBox_fit, 0, 1, 1, 1)
        self.gridLayout_8.addWidget(self.groupBox_fit, 1, 1, 2, 1)
        self.groupBox_3D = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox_3D.setEnabled(False)
        self.groupBox_3D.setObjectName("groupBox_3D")
        self.radioButton_3Dline = QtWidgets.QRadioButton(self.groupBox_3D)
        self.radioButton_3Dline.setGeometry(QtCore.QRect(10, 37, 59, 16))
        self.radioButton_3Dline.setChecked(True)
        self.radioButton_3Dline.setObjectName("radioButton_3Dline")
        self.radioButton_3Dsurface = QtWidgets.QRadioButton(self.groupBox_3D)
        self.radioButton_3Dsurface.setGeometry(QtCore.QRect(147, 37, 59, 16))
        self.radioButton_3Dsurface.setObjectName("radioButton_3Dsurface")
        self.radioButton_3Dscatter = QtWidgets.QRadioButton(self.groupBox_3D)
        self.radioButton_3Dscatter.setGeometry(QtCore.QRect(79, 37, 59, 16))
        self.radioButton_3Dscatter.setObjectName("radioButton_3Dscatter")
        self.gridLayout_8.addWidget(self.groupBox_3D, 2, 0, 1, 1)
        self.groupBox = QtWidgets.QGroupBox(self.tab_3)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout_7 = QtWidgets.QGridLayout(self.groupBox)
        self.gridLayout_7.setObjectName("gridLayout_7")
        self.lineEdit_datax = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_datax.setObjectName("lineEdit_datax")
        self.gridLayout_7.addWidget(self.lineEdit_datax, 1, 1, 1, 1)
        self.label_8 = QtWidgets.QLabel(self.groupBox)
        self.label_8.setObjectName("label_8")
        self.gridLayout_7.addWidget(self.label_8, 1, 4, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.groupBox)
        self.label_6.setInputMethodHints(QtCore.Qt.ImhNone)
        self.label_6.setScaledContents(False)
        self.label_6.setWordWrap(True)
        self.label_6.setObjectName("label_6")
        self.gridLayout_7.addWidget(self.label_6, 0, 0, 1, 6)
        self.lineEdit_dataz = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_dataz.setEnabled(False)
        self.lineEdit_dataz.setObjectName("lineEdit_dataz")
        self.gridLayout_7.addWidget(self.lineEdit_dataz, 1, 5, 1, 1)
        self.lineEdit_datay = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_datay.setObjectName("lineEdit_datay")
        self.gridLayout_7.addWidget(self.lineEdit_datay, 1, 3, 1, 1)
        self.label_7 = QtWidgets.QLabel(self.groupBox)
        self.label_7.setObjectName("label_7")
        self.gridLayout_7.addWidget(self.label_7, 1, 2, 1, 1)
        self.label_5 = QtWidgets.QLabel(self.groupBox)
        self.label_5.setObjectName("label_5")
        self.gridLayout_7.addWidget(self.label_5, 1, 0, 1, 1)
        self.gridLayout_8.addWidget(self.groupBox, 3, 0, 1, 2)
        self.groupBox_6 = QtWidgets.QGroupBox(self.tab_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox_6.sizePolicy().hasHeightForWidth())
        self.groupBox_6.setSizePolicy(sizePolicy)
        self.groupBox_6.setObjectName("groupBox_6")
        self.gridLayout_11 = QtWidgets.QGridLayout(self.groupBox_6)
        self.gridLayout_11.setObjectName("gridLayout_11")
        self.radioButton_2D = QtWidgets.QRadioButton(self.groupBox_6)
        self.radioButton_2D.setChecked(True)
        self.radioButton_2D.setObjectName("radioButton_2D")
        self.gridLayout_11.addWidget(self.radioButton_2D, 0, 0, 1, 1)
        self.radioButton_3D = QtWidgets.QRadioButton(self.groupBox_6)
        self.radioButton_3D.setObjectName("radioButton_3D")
        self.gridLayout_11.addWidget(self.radioButton_3D, 0, 1, 1, 1)
        self.gridLayout_8.addWidget(self.groupBox_6, 0, 0, 1, 2)
        self.tabWidget.addTab(self.tab_3, "")
        self.gridLayout_6.addWidget(self.tabWidget, 0, 0, 1, 10)
        self.saveDataButton = QtWidgets.QPushButton(self.centralwidget)
        self.saveDataButton.setObjectName("saveDataButton")
        self.gridLayout_6.addWidget(self.saveDataButton, 2, 6, 1, 1)
        spacerItem11 = QtWidgets.QSpacerItem(20, 40,
                                             QtWidgets.QSizePolicy.Minimum,
                                             QtWidgets.QSizePolicy.Expanding)
        self.gridLayout_6.addItem(spacerItem11, 0, 10, 4, 1)
        spacerItem12 = QtWidgets.QSpacerItem(18, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem12, 2, 0, 1, 1)
        spacerItem13 = QtWidgets.QSpacerItem(18, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem13, 2, 7, 1, 1)
        spacerItem14 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem14, 3, 0, 1, 10)
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.textBrowser.sizePolicy().hasHeightForWidth())
        self.textBrowser.setSizePolicy(sizePolicy)
        self.textBrowser.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow)
        self.textBrowser.setReadOnly(True)
        self.textBrowser.setObjectName("textBrowser")
        self.gridLayout_6.addWidget(self.textBrowser, 4, 0, 1, 12)
        spacerItem15 = QtWidgets.QSpacerItem(17, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem15, 2, 9, 1, 1)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.filenameLabel = QtWidgets.QLabel(self.centralwidget)
        self.filenameLabel.setText("")
        self.filenameLabel.setObjectName("filenameLabel")
        self.horizontalLayout_2.addWidget(self.filenameLabel)
        spacerItem16 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem16)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.horizontalLayout_2.addWidget(self.label)
        self.fileformatLabel = QtWidgets.QLabel(self.centralwidget)
        self.fileformatLabel.setText("")
        self.fileformatLabel.setObjectName("fileformatLabel")
        self.horizontalLayout_2.addWidget(self.fileformatLabel)
        spacerItem17 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem17)
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_2.addWidget(self.label_3)
        self.dataDimLabel = QtWidgets.QLabel(self.centralwidget)
        self.dataDimLabel.setText("")
        self.dataDimLabel.setObjectName("dataDimLabel")
        self.horizontalLayout_2.addWidget(self.dataDimLabel)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.tableWidget = DataTableWidget(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tableWidget.sizePolicy().hasHeightForWidth())
        self.tableWidget.setSizePolicy(sizePolicy)
        self.tableWidget.setObjectName("tableWidget")
        self.verticalLayout.addWidget(self.tableWidget)
        self.gridLayout_6.addLayout(self.verticalLayout, 0, 11, 4, 1)
        self.pushButton_refresh = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_refresh.setObjectName("pushButton_refresh")
        self.gridLayout_6.addWidget(self.pushButton_refresh, 2, 1, 1, 1)
        spacerItem18 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_6.addItem(spacerItem18, 2, 2, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.menubar.addAction(self.menu.menuAction())

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.setTabOrder(self.tabWidget, self.pushButton_openfile)
        MainWindow.setTabOrder(self.pushButton_openfile,
                               self.pushButton_refresh)
        MainWindow.setTabOrder(self.pushButton_refresh, self.initDataButton)
        MainWindow.setTabOrder(self.initDataButton, self.saveDataButton)
        MainWindow.setTabOrder(self.saveDataButton, self.plotButton)
        MainWindow.setTabOrder(self.plotButton, self.radioButton_ignorenan)
        MainWindow.setTabOrder(self.radioButton_ignorenan,
                               self.radioButton_delnan)
        MainWindow.setTabOrder(self.radioButton_delnan,
                               self.radioButton_fillnan)
        MainWindow.setTabOrder(self.radioButton_fillnan, self.checkNaNButton)
        MainWindow.setTabOrder(self.checkNaNButton, self.okButton_nan)
        MainWindow.setTabOrder(self.okButton_nan, self.repealButton_nan)
        MainWindow.setTabOrder(self.repealButton_nan,
                               self.radioButton_ignorenondim)
        MainWindow.setTabOrder(self.radioButton_ignorenondim,
                               self.radioButton_zstandard)
        MainWindow.setTabOrder(self.radioButton_zstandard,
                               self.radioButton_01standard)
        MainWindow.setTabOrder(self.radioButton_01standard,
                               self.radioButton_normalizer)
        MainWindow.setTabOrder(self.radioButton_normalizer,
                               self.okButton_nondim)
        MainWindow.setTabOrder(self.okButton_nondim, self.radioButton_2D)
        MainWindow.setTabOrder(self.radioButton_2D, self.radioButton_3D)
        MainWindow.setTabOrder(self.radioButton_3D, self.radioButton_2Dline)
        MainWindow.setTabOrder(self.radioButton_2Dline,
                               self.radioButton_3Dline)
        MainWindow.setTabOrder(self.radioButton_3Dline, self.lineEdit_datax)
        MainWindow.setTabOrder(self.lineEdit_datax, self.lineEdit_datay)
        MainWindow.setTabOrder(self.lineEdit_datay, self.lineEdit_dataz)
        MainWindow.setTabOrder(self.lineEdit_dataz, self.textBrowser)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "数据分析工具"))
        self.initDataButton.setText(_translate("MainWindow", "数据初始化"))
        self.plotButton.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-size:8pt;\">根据绘图设置对当前数据集进行绘图</span></p></body></html>"
            ))
        self.plotButton.setText(_translate("MainWindow", "绘图"))
        self.pushButton_openfile.setText(_translate("MainWindow", "选择文件"))
        self.label_4.setText(_translate("MainWindow", "数据基本特征信息如下:"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab),
                                  _translate("MainWindow", "数据导入"))
        self.groupBox_2.setTitle(_translate("MainWindow", "缺失值处理"))
        self.radioButton_ignorenan.setText(_translate("MainWindow", "忽略"))
        self.radioButton_delnan.setToolTip(
            _translate("MainWindow",
                       "<html><head/><body><p>删除含缺失值的样本</p></body></html>"))
        self.radioButton_delnan.setText(_translate("MainWindow", "删除"))
        self.radioButton_fillnan.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p>使用对应特征均值来填充缺失值</p></body></html>"))
        self.radioButton_fillnan.setText(_translate("MainWindow", "均值代替"))
        self.checkNaNButton.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p>统计含有缺失值的样本数,并给出建议操作</p></body></html>"))
        self.checkNaNButton.setText(_translate("MainWindow", "检查NaN值"))
        self.repealButton_nan.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-size:8pt;\">撤回该操作</span></p></body></html>"
            ))
        self.repealButton_nan.setText(_translate("MainWindow", "撤回"))
        self.okButton_nan.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-size:8pt;\">执行该操作</span></p></body></html>"
            ))
        self.okButton_nan.setText(_translate("MainWindow", "确认"))
        self.groupBox_3.setTitle(_translate("MainWindow", "无量纲化处理"))
        self.initButton_nondim.setText(_translate("MainWindow", "撤回初始数据"))
        self.okButton_nondim.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-size:8pt;\">执行该操作</span></p></body></html>"
            ))
        self.okButton_nondim.setText(_translate("MainWindow", "确认"))
        self.repealButton_nondim.setToolTip(
            _translate("MainWindow",
                       "<html><head/><body><p>撤回该操作</p></body></html>"))
        self.repealButton_nondim.setText(_translate("MainWindow", "撤回上一步"))
        self.radioButton_ignorenondim.setText(_translate("MainWindow", "忽略"))
        self.radioButton_zstandard.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-family:\'-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif\'; font-size:8pt; color:#1a1a1a; background-color:#ffffff;\">基于特征值的均值(mean)和标准差(standard deviation)进行数据的标准化</span></p><p><span style=\" font-family:\'-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif\'; font-size:8pt; color:#1a1a1a; background-color:#ffffff;\">目的:1.对于方差非常小的属性可以增强其稳定性;2.维持稀疏矩阵中为0的条目。</span></p></body></html>"
            ))
        self.radioButton_zstandard.setText(_translate("MainWindow", "Z标准化"))
        self.radioButton_01standard.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-family:\'-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif\'; font-size:8pt; color:#1a1a1a; background-color:#ffffff;\">对原始数据进行线性变换,将特征值映射成区间为[0,1]的标准值中</span></p></body></html>"
            ))
        self.radioButton_01standard.setText(_translate("MainWindow", "归一化"))
        self.radioButton_normalizer.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p><span style=\" font-family:\'-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif\'; font-size:8pt; color:#1a1a1a; background-color:#ffffff;\">将每个样本缩放到单位范数(每个样本的范数为1)</span></p><p><span style=\" font-family:\'-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif\'; font-size:8pt; color:#1a1a1a; background-color:#ffffff;\">该方法主要应用于文本分类和聚类中。</span></p></body></html>"
            ))
        self.radioButton_normalizer.setText(_translate("MainWindow", "正则化"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2),
                                  _translate("MainWindow", "特征预处理"))
        self.groupBox_2D.setTitle(_translate("MainWindow", "2D绘图设置"))
        self.radioButton_2Dline.setText(_translate("MainWindow", "折线图"))
        self.radioButton_2Dhist.setText(_translate("MainWindow", "直方图"))
        self.radioButton_2Dscatter.setText(_translate("MainWindow", "散点图"))
        self.checkBox_histfit.setToolTip(
            _translate(
                "MainWindow",
                "<html><head/><body><p>是否对柱状图中数据进行拟合</p></body></html>"))
        self.checkBox_histfit.setText(_translate("MainWindow", "密度曲线"))
        self.groupBox_fit.setTitle(_translate("MainWindow", "数据拟合"))
        self.label_9.setText(_translate("MainWindow", "是否拟合:"))
        self.comboBox_fitmethod.setItemText(0,
                                            _translate("MainWindow", "多项式拟合"))
        self.comboBox_fitmethod.setItemText(1,
                                            _translate("MainWindow", "e指数拟合"))
        self.comboBox_fitmethod.setItemText(2,
                                            _translate("MainWindow", "对数拟合"))
        self.comboBox_2d_n.setCurrentText(_translate("MainWindow", "1"))
        self.comboBox_2d_n.setItemText(0, _translate("MainWindow", "1"))
        self.comboBox_2d_n.setItemText(1, _translate("MainWindow", "2"))
        self.comboBox_2d_n.setItemText(2, _translate("MainWindow", "3"))
        self.comboBox_2d_n.setItemText(3, _translate("MainWindow", "4"))
        self.comboBox_2d_n.setItemText(4, _translate("MainWindow", "5"))
        self.label_10.setText(_translate("MainWindow", "拟合方式:"))
        self.label_11.setText(_translate("MainWindow", "拟合阶数:"))
        self.groupBox_3D.setTitle(_translate("MainWindow", "3D绘图设置"))
        self.radioButton_3Dline.setText(_translate("MainWindow", "折线图"))
        self.radioButton_3Dsurface.setText(_translate("MainWindow", "曲面图"))
        self.radioButton_3Dscatter.setText(_translate("MainWindow", "散点图"))
        self.groupBox.setTitle(_translate("MainWindow", "绘图数据"))
        self.lineEdit_datax.setText(_translate("MainWindow", "0"))
        self.label_8.setText(_translate("MainWindow", "z:"))
        self.label_6.setText(
            _translate(
                "MainWindow",
                "Tips: 请输入需要绘图的数据,可选择列标形式(从0开始)或者特征名称形式,如有多个特征,请用英文逗号,隔开!"))
        self.lineEdit_dataz.setText(_translate("MainWindow", "2"))
        self.lineEdit_datay.setText(_translate("MainWindow", "1"))
        self.label_7.setText(_translate("MainWindow", "y:"))
        self.label_5.setText(_translate("MainWindow", "x:"))
        self.groupBox_6.setTitle(_translate("MainWindow", "图像类型"))
        self.radioButton_2D.setText(_translate("MainWindow", "2D"))
        self.radioButton_3D.setText(_translate("MainWindow", "3D"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3),
                                  _translate("MainWindow", "绘图设置"))
        self.saveDataButton.setText(_translate("MainWindow", "保存数据"))
        self.label_2.setText(_translate("MainWindow", "文件名称:"))
        self.label.setText(_translate("MainWindow", "文件格式:"))
        self.label_3.setText(_translate("MainWindow", "数据维度:"))
        self.pushButton_refresh.setToolTip(
            _translate("MainWindow",
                       "<html><head/><body><p>刷新界面</p></body></html>"))
        self.pushButton_refresh.setText(_translate("MainWindow", "刷新"))
        self.menu.setTitle(_translate("MainWindow", "帮助"))