我有一个默认的“另存为”功能绑定到一个按钮单击,它调用一个模态窗口。 另外,我有一个函数,它将所需的数组保存为.xlsx文件。
self.data_processing.clicked.connect(self.process)
def process(self):
sample = pd.read_excel(self.fileName)
list_of_index = []
for i in range(len(sample.columns)):
sample2 = sample.iloc[:, lambda sample: [i]]
sample2 = sample2.columns[0]
list_of_index.append(sample2)
list_of_index
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... Area where all the data is computed ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
workbook = xlsxwriter.Workbook('Sample.xlsx')
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()
row = 0
for col, data in enumerate(fulllist):
worksheet1.write_column(row, col, data)
for col, data in enumerate(fulllist_percent):
worksheet2.write_column(row, col, data)
for col, data in enumerate(fulllist_click):
worksheet3.write_column(row, col, data)
for col, data in enumerate(additional_info):
worksheet4.write_column(row, col, data)
workbook.close()
基本上,我要问的是:如何将xlsx writer插入saveFile(),以便使用默认的saveAs窗口将我的数组保存为xlsx
我的用户界面代码
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(802, 996)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.dataChoose_label = QtWidgets.QLabel(self.centralwidget)
self.dataChoose_label.setGeometry(QtCore.QRect(20, 10, 211, 31))
font = QtGui.QFont()
font.setPointSize(13)
self.dataChoose_label.setFont(font)
self.dataChoose_label.setObjectName("dataChoose_label")
self.data_processing = QtWidgets.QPushButton(self.centralwidget)
self.data_processing.setGeometry(QtCore.QRect(640, 50, 141, 61))
self.data_processing.setObjectName("data_processing")
self.paramInput_label = QtWidgets.QLabel(self.centralwidget)
self.paramInput_label.setGeometry(QtCore.QRect(20, 70, 261, 21))
self.paramInput_label.setObjectName("paramInput_label")
self.line = QtWidgets.QFrame(self.centralwidget)
self.line.setGeometry(QtCore.QRect(10, 110, 771, 21))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.saveSample_label = QtWidgets.QLabel(self.centralwidget)
self.saveSample_label.setGeometry(QtCore.QRect(10, 150, 271, 41))
self.saveSample_label.setObjectName("saveSample_label")
self.saveSample_btn = QtWidgets.QToolButton(self.centralwidget)
self.saveSample_btn.setGeometry(QtCore.QRect(290, 150, 131, 41))
self.saveSample_btn.setObjectName("saveSample_btn")
self.line_2 = QtWidgets.QFrame(self.centralwidget)
self.line_2.setGeometry(QtCore.QRect(10, 200, 771, 20))
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.stringInput_label = QtWidgets.QLabel(self.centralwidget)
self.stringInput_label.setGeometry(QtCore.QRect(20, 260, 281, 16))
self.stringInput_label.setObjectName("stringInput_label")
self.stringInput_label_2 = QtWidgets.QLabel(self.centralwidget)
self.stringInput_label_2.setGeometry(QtCore.QRect(30, 270, 271, 16))
font = QtGui.QFont()
font.setPointSize(6)
self.stringInput_label_2.setFont(font)
self.stringInput_label_2.setObjectName("stringInput_label_2")
self.stringInput_field = QtWidgets.QTextEdit(self.centralwidget)
self.stringInput_field.setGeometry(QtCore.QRect(320, 220, 461, 121))
self.stringInput_field.setObjectName("stringInput_field")
self.sampleChoose_label = QtWidgets.QLabel(self.centralwidget)
self.sampleChoose_label.setGeometry(QtCore.QRect(20, 410, 281, 21))
self.sampleChoose_label.setObjectName("sampleChoose_label")
self.sampleChoose_list = QtWidgets.QListView(self.centralwidget)
self.sampleChoose_list.setGeometry(QtCore.QRect(320, 350, 461, 151))
self.sampleChoose_list.setObjectName("sampleChoose_list")
self.clickSample_label = QtWidgets.QLabel(self.centralwidget)
self.clickSample_label.setGeometry(QtCore.QRect(20, 580, 461, 41))
self.clickSample_label.setObjectName("clickSample_label")
self.clickSamle_list = QtWidgets.QColumnView(self.centralwidget)
self.clickSamle_list.setGeometry(QtCore.QRect(520, 510, 256, 192))
self.clickSamle_list.setObjectName("clickSamle_list")
self.paramInput_label_2 = QtWidgets.QLabel(self.centralwidget)
self.paramInput_label_2.setGeometry(QtCore.QRect(40, 90, 191, 16))
self.paramInput_label_2.setObjectName("paramInput_label_2")
self.saveClick_label = QtWidgets.QLabel(self.centralwidget)
self.saveClick_label.setGeometry(QtCore.QRect(20, 790, 431, 21))
self.saveClick_label.setObjectName("saveClick_label")
self.saveClick_list = QtWidgets.QListView(self.centralwidget)
self.saveClick_list.setGeometry(QtCore.QRect(520, 710, 141, 191))
self.saveClick_list.setObjectName("saveClick_list")
self.saveClick_btn = QtWidgets.QToolButton(self.centralwidget)
self.saveClick_btn.setGeometry(QtCore.QRect(670, 770, 101, 71))
self.saveClick_btn.setObjectName("saveClick_btn")
self.dataChooseBtn = QtWidgets.QPushButton(self.centralwidget)
self.dataChooseBtn.setGeometry(QtCore.QRect(260, 0, 151, 51))
self.dataChooseBtn.setObjectName("dataChooseBtn")
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setGeometry(QtCore.QRect(620, -10, 20, 121))
self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.paramInput_accept = QtWidgets.QPushButton(self.centralwidget)
self.paramInput_accept.setGeometry(QtCore.QRect(500, 70, 111, 41))
self.paramInput_accept.setObjectName("paramInput_accept")
self.paramInput_field_2 = QtWidgets.QLineEdit(self.centralwidget)
self.paramInput_field_2.setGeometry(QtCore.QRect(270, 70, 221, 31))
self.paramInput_field_2.setObjectName("paramInput_field_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 802, 22))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
self.menu_2 = QtWidgets.QMenu(self.menubar)
self.menu_2.setObjectName("menu_2")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.action = QtWidgets.QAction(MainWindow)
self.action.setObjectName("action")
self.action_2 = QtWidgets.QAction(MainWindow)
self.action_2.setObjectName("action_2")
self.action_4 = QtWidgets.QAction(MainWindow)
self.action_4.setObjectName("action_4")
self.action_5 = QtWidgets.QAction(MainWindow)
self.action_5.setObjectName("action_5")
self.action_6 = QtWidgets.QAction(MainWindow)
self.action_6.setObjectName("action_6")
self.action_7 = QtWidgets.QAction(MainWindow)
self.action_7.setObjectName("action_7")
self.action_8 = QtWidgets.QAction(MainWindow)
self.action_8.setObjectName("action_8")
self.menu.addAction(self.action)
self.menu.addAction(self.action_2)
self.menu.addSeparator()
self.menu.addAction(self.action_4)
self.menu_2.addAction(self.action_5)
self.menu_2.addSeparator()
self.menu_2.addAction(self.action_6)
self.menu_2.addAction(self.action_7)
self.menu_2.addAction(self.action_8)
self.menu_2.addSeparator()
self.menubar.addAction(self.menu.menuAction())
self.menubar.addAction(self.menu_2.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.dataChoose_label.setText(_translate("MainWindow", "Выберите выборку для анализа:"))
self.data_processing.setText(_translate("MainWindow", "Обработать"))
self.paramInput_label.setText(_translate("MainWindow", "Значения параметрического столбца:"))
self.saveSample_label.setText(_translate("MainWindow", "Сохранить файл обработанной выборки :"))
self.saveSample_btn.setText(_translate("MainWindow", "Сохранить как..."))
self.stringInput_label.setText(_translate("MainWindow", "Вставьте строку для анализа по выборкам:"))
self.stringInput_label_2.setText(_translate("MainWindow", "(помните, что размерность строки должна совпадать с размерностью выборки)"))
self.stringInput_field.setPlaceholderText(_translate("MainWindow", "12.0092 16.3209 13.5649 8.2123 3.8459 2.1767 4.2975 6.0223 4.104 1.6001 1.2444 1.6035 1.0391 0.3194 0.4114 1.0386 1.4205 1.2496 0.9781 0.8515 0.7001 0.5825 0.4005 0.056 -0.0761 -0.1211 -0.5841 -0.9534 -0.5585 -0.043 0.1195 0.4775 0.8882 0.5579 -0.3917 -1.0096 -0.8487 -0.191 0.558 0.888 0.6353 0.2705 0.1206 0.0296 -0.2056 -0.3782 -0.2085 0.0363 -0.0919 -0.5511 -0.7785 -0.4769 -0.1874 -0.2101 -0.1309 -0.0181 -0.0812 0.0797 0.4885 0.5797 0.1142 -0.6158 -1.0995 -1.1537 -1.0385 -0.8175 -0.5396 -0.5002 -0.5649 -0.3875 -0.1347 -0.0554 -0.1495 -0.5774 -1.4059 -2.0242 -1.7347 -0.9614 -1.134 -2.75 -4.3387 -3.9483 -1.3619 1.0278 1.8453 2.6694 3.0748 1.6349 0.4356 0.0892 -1.9074 -3.4085 0.0632 5.6347 6.9852 2.996 -1.9341 -2.9032 -1.3316 -1.4645 -2.346 -1.8374 -0.7552 -0.1104 -0.0739 -0.2815 -0.2086 -0.0079 -0.01 23.0892 29.1765 23.5674 13.5347 6.7836 4.7064 7.4076 9.8512 7.711 4.421 3.8218 3.8774 2.4927 1.509 1.7488 2.2334 2.6185 2.666 2.4429 2.1909 1.6602 1.1591 1.0329 0.8772 0.5525 -0.0326 -0.9759 -1.4809 -1.0451 -0.5877 -0.365 0.4304 1.2717 0.8605 -0.7115 -1.9355 -1.6475 -0.4566 0.3175 0.4504 0.4514 0.3418 0.0385 -0.2063 -0.5039 -0.9804 -1.0378 -0.3791 0.1789 0.0051 -0.3564 -0.2833 0.0033 0.2184 0.3963 0.2137 -0.3378 -0.3548 0.2524 0.5642 0.4861 0.3833 0.2324 0.0401 -0.2 -0.4625 -0.6773 -0.9002 -1.0058 -0.9126 -0.7887 -0.5017 0.0166 0.089 -0.5678 -0.9103 -0.2846 0.1344 -0.6565 -1.8617 -2.8639 -3.2946 -1.7414 0.8095 1.8218 2.913 5.5284 6.8624 5.5749 2.9869 0.5648 0.1551 2.0738 3.9631 3.9425 2.2731 0.3942 -0.3964 -0.4147 -0.5376 -0.6139 -0.4817 -0.3295 -0.1489 -0.037 -0.0827 -0.1574 -0.2141 -0.2027 49.6999 69.7767 59.835 35.0647 17.4911 12.3939 17.0397 19.9471 15.007 9.2894 7.5289 6.9816 5.058 3.5523 3.8629 4.2375 3.6877 3.1812 3.0437 2.5079 1.5437 1.0561 0.9955 0.6981 0.2919 -0.2281 -1.0574 -1.3007 -0.1233 1.1392 1.1779 1.0094 1.3004 0.9836 -0.3246 -1.2542 -0.8339 0.1268 0.6459 0.6081 0.2417 -0.0669 -0.1116 -0.0771 -0.1855 -0.5842 -0.829 -0.2147 0.6164 0.5564 -0.0103 -0.2302 -0.2281 -0.2369 -0.0665 -0.042 -0.5462 -0.9621 -0.6502 0.0652 0.5529 0.5899 0.3647 0.1206 -0.0448 -0.0984 -0.0704 -0.054 -0.1167 -0.2596 -0.3558 -0.0412 0.4906 0.2146 -0.8041 -1.1069 -0.2334 0.6806 0.5641 -0.7375 -2.3345 -2.6284 -1.1741 0.2974 0.2609 -0.348 -0.4119 -0.3005 -0.2052 -0.5323 -1.2313 -0.5117 1.5922 2.7109 2.1302 0.581 -1.2169 -2.1012 -1.7068 -1.1139 -1.0359 -1.0811 -0.8442 -0.5725 -0.515 -0.4083 -0.0985 0.1166 0.0764 23.5902 34.8167 29.9879 16.4722 5.4736 2.181 6.7235 10.2094 7.094 2.9677 2.1246 2.5647 1.9333 1.0593 1.2674 1.9215 2.0104 1.6322 1.4533 1.5853 1.5679 1.3903 1.2074 0.8589 0.5309 0.274 -0.2856 -0.7007 -0.1369 0.8568 1.19 0.8973 0.617 0.3567 -0.3107 -0.9505 -0.8385 -0.1632 0.5551 1.0729 1.2167 0.6402 -0.3775 -0.9034 -0.9189 -0.9266 -0.6947 -0.1 0.1831 -0.1596 -0.5045 -0.4391 -0.5047 -0.9824 -1.1132 -0.7724 -0.583 -0.3597 0.1779 0.5606 0.1891 -0.9182 -1.8643 -2.015 -1.7303 -1.2444 -0.5691 -0.1537 -0.1987 -0.3384 -0.3042 -0.028 0.2469 -0.2079 -1.4522 -2.3573 -1.9341 -0.6466 -0.913 -4.3801 -7.9001 -6.6034 -1.4666 1.7396 2.0908 2.8658 2.1172 -1.9873 -4.8558 -5.6181 -7.1121 -5.4427 2.5583 9.8955 9.4869 2.8168 -3.7388 -4.6938 -1.7796 -0.9772 -2.3755 -2.5732 -1.3491 -0.1918 0.0832 -0.1739 -0.1287 0.1745 0.2329 10.9524 14.2529 10.6435 4.9582 1.9521 1.6169 2.798 3.7354 3.8803 4.2305 4.3 3.3745 2.361 2.0548 1.9706 1.4763 0.8167 0.3832 0.1208 -0.0447 -0.1531 -0.0436 0.3202 0.4171 -0.0697 -0.7665 -1.0122 -0.636 -0.1998 -0.1933 -0.4417 -0.5925 -0.6307 -0.5539 -0.3035 -0.0407 0.1644 0.5 1.0221 1.4231 1.3673 0.7837 -0.0852 -0.5517 -0.4074 -0.3756 -0.5013 -0.1606 0.4632 0.752 0.4683 -0.0725 -0.3727 -0.5529 -0.9097 -1.1661 -1.0929 -0.8594 -0.6232 -0.5495 -0.7225 -0.9037 -0.9698 -0.9907 -0.7276 -0.1471 0.2418 0.251 0.062 -0.255 -0.5458 -0.6746 -0.6797 -0.5133 -0.2586 -0.1598 -0.1986 -0.3142 -1.0576 -2.8278 -4.1382 -3.4232 -1.3599 1.3626 3.6212 2.6097 -0.4519 -1.445 -1.4249 -4.3882 -10.5879 -13.5279 -7.4621 3.0363 10.3816 10.2443 3.0927 -3.2072 -3.8023 -2.2997 -1.6427 -1.1828 -0.3508 0.3342 0.4442 0.3325 0.5332 0.924 0.8647 20.8696 27.1891 21.6745 11.839 6.2656 5.5586 7.4727 8.2034 6.8261 5.9256 5.8057 5.0093 3.6226 2.7789 2.5921 2.29 1.7347 1.2871 0.9973 0.7089 0.361 0.3081 0.6116 0.5802 -0.1118 -0.9791 -1.3397 -0.8983 -0.1141 0.0817 -0.3459 -0.3375 0.32 0.6936 0.3626 -0.1519 -0.2493 0.063 0.3576 0.4193 0.4442 0.457 0.1041 -0.4185 -0.5981 -0.6161 -0.6173 -0.2822 0.3205 0.7469 0.681 0.1792 -0.2842 -0.4016 -0.3742 -0.4325 -0.5638 -0.5962 -0.4603 -0.4061 -0.4795 -0.3646 -0.2065 -0.3974 -0.5597 -0.2419 0.1404 0.1841 0.0232 -0.1716 -0.3105 -0.388 -0.3489 -0.1462 0.0227 0.0825 0.0584 -0.1485 -0.6376 -1.44 -1.9336 -1.2505 0.2067 1.7441 2.735 1.8703 0.396 0.5912 1.1902 0.4427 -2.003 -4.3035 -3.2353 -0.1565 1.6481 1.7801 0.4805 -1.2714 -1.8955 -1.4548 -0.8987 -0.5058 -0.0902 0.2493 0.3019 0.2254 0.3217 0.5682 0.6039 44.7774 59.2644 48.3444 25.6805 12.7331 11.518 15.1719 15.6678 12.5041 11.6583 12.2632 10.3639 7.2073 5.7946 5.786 4.9055 3.2123 2.2999 1.9652 1.327 0.6183 0.6235 1.2602 1.5138 0.9206 -0.1558 -0.8477 -0.4624 0.4653 0.8362 0.5566 0.5153 1.1414 1.6521 1.2413 0.3184 -0.3617 -0.5259 -0.173 0.1837 0.166 0.1927 0.4739 0.8132 0.9718 0.5724 -0.0814 -0.2193 -0.0169 0.0211 -0.0229 -0.1343 -0.3588 -0.3259 0.1188 0.4219 -0.0175 -0.8971 -1.2925 -1.0202 -0.6154 -0.3013 -0.1924 -0.4746 -0.692 -0.3546 0.137 0.3454 0.1956 -0.3318 -0.7643 -0.6234 -0.2666 -0.3225 -0.7777 -0.9072 -0.3201 0.4168 0.3082 -0.8645 -1.542 -0.3366 1.5401 2.4102 2.1885 0.7324 -1.6746 -3.6351 -4.4016 -4.5757 -5.476 -5.747 -3.0459 0.9132 4.0289 5.1989 3.2462 0.3871 -0.5417 -0.1191 0.2969 0.4394 0.3879 0.1941 -0.0016 0.0158 0.3095 0.5857 0.411 30.2006 39.3582 29.9576 14.0813 7.3008 9.0822 11.8449 10.5825 7.8682 8.9961 10.9417 9.5758 7.2909 6.7268 6.7451 5.2366 2.8996 1.7664 1.6456 1.4861 1.26 1.5259 2.0742 1.9703 1.1513 0.1103 -0.4006 0.073 0.5807 0.3707 -0.1779 -0.656 -0.6826 -0.0756 0.6797 1.0599 0.9552 0.737 0.7427 0.4973 -0.218 -0.7341 -0.6726 -0.1082 0.4481 0.0778 -0.9304 -1.3084 -0.9726 -0.6918 -0.7392 -0.9288 -0.9103 -0.6299 -0.6061 -1.0453 -1.4129 -1.3664 -1.1234 -0.9574 -0.9611 -1.0098 -1.0153 -0.9935 -0.6263 0.0147 0.1319 -0.3184 -0.7648 -1.0499 -0.9592 -0.593 -0.5487 -0.7664 -0.8247 -0.5693 0.2136 1.3327 1.0359 -1.7183 -3.9489 -3.0081 -0.4778 2.0716 4.0662 3.2434 -1.292 -6.2305 -8.7793 -12.8573 -21.6219 -23.7086 -9.6675 9.8865 22.0893 20.9908 8.476 -1.5682 -2.1344 -0.4314 -0.8335 -1.3351 -0.7732 -0.0697 0.0553 0.1637 0.8374 1.4351 1.0663"))
self.sampleChoose_label.setText(_translate("MainWindow", "Выбери выборку(-ки) для анализа строки:"))
self.clickSample_label.setText(_translate("MainWindow", "Значения суммарных весовых откликов и степени валидности строки:"))
self.paramInput_label_2.setText(_translate("MainWindow", "для определения корреляций"))
self.saveClick_label.setText(_translate("MainWindow", "Сохранение данных по проверямой строке в выбранной выборке:"))
self.saveClick_btn.setText(_translate("MainWindow", "Сохранить как..."))
self.dataChooseBtn.setText(_translate("MainWindow", "Выберите файл..."))
self.paramInput_accept.setText(_translate("MainWindow", "Подтвердить"))
self.paramInput_field_2.setPlaceholderText(_translate("MainWindow", "50.0, 100.0, 150.0, 200.0, 250.0, 300.0, 350.0, 400.0, 450.0, 500.0, 550.0, 600.0, 650.0, 700.0, 750.0, 800.0, 850.0, 900.0, 950.0, 1000.0, 1100.0, 1150.0, 1200.0, 1250.0, 1300.0, 1350.0, 1400.0, 1450.0, 1500.0, 1550.0, 1600.0, 1650.0, 1700.0, 1750.0, 1800.0, 1850.0, 1900.0, 1950.0, 2000.0, 2050.0, 2100.0, 2150.0, 2200.0, 2250.0, 2300.0, 2350.0, 2400.0, 2450.0, 2500.0, 2550.0, 2600.0, 2650.0, 2700.0, 2750.0, 2800.0, 2850.0, 2900.0, 2950.0, 3000.0"))
self.menu.setTitle(_translate("MainWindow", "Файл"))
self.menu_2.setTitle(_translate("MainWindow", "Правка"))
self.action.setText(_translate("MainWindow", "Открыть..."))
self.action_2.setText(_translate("MainWindow", "Сохранить..."))
self.action_4.setText(_translate("MainWindow", "Печать"))
self.action_5.setText(_translate("MainWindow", "Отменить"))
self.action_6.setText(_translate("MainWindow", "Копировать"))
self.action_7.setText(_translate("MainWindow", "Вырезать"))
self.action_8.setText(_translate("MainWindow", "Вставить"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我的主要节目
import os
import sys
import pandas as pd
import numpy
import scipy.stats
import xlsxwriter
from PyQt5.QtWidgets import QApplication, QMainWindow, qApp, QWidget, QInputDialog, QLineEdit, QFileDialog, QMessageBox
from PyQt5.QtCore import Qt, QEvent, QObject
from PyQt5.QtCore import pyqtSlot
from ui_main import Ui_MainWindow
class MyMainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent)
qApp.installEventFilter(self)
self.setupUi(self)
self.dataChooseBtn.clicked.connect(self.selectFile)
self.saveClick_btn.clicked.connect(self.saveFile)
self.saveSample_btn.clicked.connect(self.saveSample)
self.paramInput_accept.clicked.connect(self.accept)
self.data_processing.clicked.connect(self.process)
self.show()
def eventFilter(self, obj, event):
if event.type() == QEvent.KeyPress:
if event.key() == Qt.Key_Escape:
self.close()
return super(MyMainWindow, self).eventFilter(obj, event)
@pyqtSlot()
def accept(self):
textboxValue = self.paramInput_field_2.text()
QMessageBox.information(self, 'Message', "Значения параметрического столбца: " + textboxValue, QMessageBox.Ok, QMessageBox.Ok)
def selectFile(self):
self.fileName = None
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"Выберите стандартизированную выборку", "","All Files (*);;Python Files (*.py)", options=options)
if fileName:
print(fileName)
self.fileName = fileName
def process(self):
sample = pd.read_excel(self.fileName)
list_of_index = []
for i in range(len(sample.columns)):
sample2 = sample.iloc[:, lambda sample: [i]]
sample2 = sample2.columns[0]
list_of_index.append(sample2)
list_of_index
fulllist = []
for i in list_of_index:
sample3 = sample[i].tolist()
fulllist.append(sample3)
fulllist_percent = []
column_percent = []
len(fulllist)
for i in range(len(fulllist)):
for j in range(len(fulllist[i])):
percent_rank = scipy.stats.percentileofscore(fulllist[i], fulllist[i][j])
column_percent.append(percent_rank)
fulllist_percent.append(column_percent)
column_percent = []
fulllist_rank = []
for i in range(len(fulllist)):
rank = len(fulllist[i]) - scipy.stats.rankdata(fulllist[i]) + 1
fulllist_rank.append(rank)
param = self.paramInput_field_2.text()
param = [float(i) for i in param.split(',')]
param_rank = scipy.stats.rankdata(param).astype(int)
column_corr = []
for i in range(len(fulllist)):
correlation = scipy.stats.spearmanr(param_rank[::-1], fulllist_rank[i])
column_corr.append(correlation[0])
fulllist_click = []
for j in range (len(fulllist_percent)):
middle = []
if column_corr[j] > 0:
for i in range(len(fulllist_percent[j])):
solve = column_corr[j] * fulllist_percent[j][i]
middle.append(solve)
else:
for i in range (len(fulllist_percent[j])):
solve = abs(column_corr[j]) * (100 - fulllist_percent[j][i])
middle.append(solve)
fulllist_click.append(middle)
list_of_rowsumm = []
rowsumm = 0
fulllist_clickT = numpy.asarray(fulllist_click).T.tolist()
for i in range(len(fulllist_clickT)):
rowsumm = sum(fulllist_clickT[i])
list_of_rowsumm.append(rowsumm)
percent_rowsumm = []
for i in list_of_rowsumm:
x = scipy.stats.percentileofscore(list_of_rowsumm, i)
percent_rowsumm.append(x)
additional_info = []
additional_info.append(list_of_rowsumm)
additional_info.append(percent_rowsumm)
self.fulllist = fulllist
self.fulllist_percent = fulllist_percent
self.fulllist_click = fulllist_click
self.additional_info = additional_info
workbook = xlsxwriter.Workbook('Sample.xlsx')
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()
row = 0
for col, data in enumerate(fulllist):
worksheet1.write_column(row, col, data)
for col, data in enumerate(fulllist_percent):
worksheet2.write_column(row, col, data)
for col, data in enumerate(fulllist_click):
worksheet3.write_column(row, col, data)
for col, data in enumerate(additional_info):
worksheet4.write_column(row, col, data)
workbook.close()
# return self.fulllist, self.fulllist_percent, self.fulllist_click, self.additional_info
def saveSample(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileNameSave, _ = QFileDialog.getSaveFileName(self,"QFileDialog.getSaveFileName()","","Excel files (*.xlsx)", options=options)
return fileNameSave
print(fileNameSave)
workbook = xlsxwriter.Workbook()
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()
row = 0
for col, data in enumerate(self.fulllist):
worksheet1.write_column(row, col, data)
for col, data in enumerate(self.fulllist_percent):
worksheet2.write_column(row, col, data)
for col, data in enumerate(self.fulllist_click):
worksheet3.write_column(row, col, data)
for col, data in enumerate(self.additional_info):
worksheet4.write_column(row, col, data)
workbook.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyMainWindow()
sys.exit(app.exec_())
答案 0 :(得分:0)
假设getSaveFileName为您提供了良好的价值,我认为您只需要通过以下方式更改您的函数saveSample(self)
:
def saveSample(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileNameSave, _ = QFileDialog.getSaveFileName(self,"QFileDialog.getSaveFileName()","","Excel files (*.xlsx)", options=options)
print(fileNameSave)
self.fileNameSave = fileNameSave
self.callNewFunc()
其中callNewFunc为:
def callNewFunc(self):
if self.fileNameSave:
workbook = xlsxwriter.Workbook(self.fileNameSave)
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()
row = 0
for col, data in enumerate(self.fulllist):
worksheet1.write_column(row, col, data)
for col, data in enumerate(self.fulllist_percent):
worksheet2.write_column(row, col, data)
for col, data in enumerate(self.fulllist_click):
worksheet3.write_column(row, col, data)
for col, data in enumerate(self.additional_info):
worksheet4.write_column(row, col, data)
workbook.close()
您也可以从process
调用此功能。在使用之前,您需要设置fileNameSave
。并在 init 方法中设置它:self.fileNameSave = None
在致电self.fileNameSave
之前,请确保callNewFunc
正确无误。
有帮助吗?