首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中正确保存为函数

在Python中正确保存为函数
EN

Stack Overflow用户
提问于 2018-02-19 10:59:29
回答 1查看 596关注 0票数 0

我有一个默认的另存为函数绑定到一个按钮点击,它调用一个模式窗口。另外,我还有一个函数,它将所需的数组保存为.xlsx文件。

代码语言:javascript
复制
 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代码

代码语言:javascript
复制
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_())

我的主程序

代码语言:javascript
复制
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_())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-19 13:48:43

假设getSaveFileName返回好的值,我认为您只需要通过以下方式更改函数saveSample(self)

代码语言:javascript
复制
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是:

代码语言:javascript
复制
 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是正确的。

有用吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48864655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档