我有一个默认的另存为函数绑定到一个按钮点击,它调用一个模式窗口。另外,我还有一个函数,它将所需的数组保存为.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编写器插入到saveFile()中,以便使用默认的saveAs窗口将数组保存为xlsx
我的UI代码
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_())发布于 2018-02-19 13:48:43
假设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方法中设置它:在调用callNewFunc之前,确保self.fileNameSave是正确的。
有用吗?
https://stackoverflow.com/questions/48864655
复制相似问题