pyqt 简单数据分析Demo-1.0

from untitled import Ui_MainWindow
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
# from functools import partial
import win32api,win32con, win32ui
import xlrd,xlwt

flag=0 #判断是否读入文件
# def convert(ui):
#     input = ui.lineEdit.text()
#     result = float(input) * 6.7
#     ui.lineEdit_2.setText(str(result))
def adjust(*args):
    #屏幕自适应
    screenSize=2
    if(not args):
        f = open('setting.txt', 'r', encoding='utf8')
        try:#文件可能为空
            screenSize=float(f.readline().strip())
        except:
            pass
        f.close()
    else:
        screenSize=args[0]
    global window
    window.resize(win32api.GetSystemMetrics(win32con.SM_CXSCREEN)/screenSize, win32api.GetSystemMetrics(win32con.SM_CYSCREEN)/screenSize)
def openXLS(filename):
    length=len(filename)
    if filename[length-5:length]== ".xlsx" or filename[length-4:length]==".xls":
        global nrow, ncol,sheet,flag
        flag=1
        rbook=xlrd.open_workbook(filename)#打开文件
        sheet = rbook.sheet_by_index(0)  # 打开对应的表
        nrow = sheet.nrows
        ncol = sheet.ncols  # 找到行列总数
        model= QStandardItemModel(nrow, ncol)

        # model.setHorizontalHeaderLabels(['0','1','2','3'])#设置表头
        for row in range(nrow):
            for col in range(ncol):
                item = QStandardItem(str(sheet.cell_value(row,col)))
                model.setItem(row, col, item)

        ui.tableView.setModel(model)
    else:
        ui.textBrowser.setText("不支持打开该文件")

def importFile(q):
    # print(q.text(), "llala")
    #以下是打开文件对话框以及获取文件名的方法
    dlg = win32ui.CreateFileDialog(1)
    # dlg.SetOFNInitialDir('D:/Work')  # 设置打开文件对话框中的初始显示目录,无效
    dlg.DoModal()
    filename = dlg.GetPathName()  # 获取选择的文件名称

    openXLS(filename)
def setWindowSize(q):
    f=open('setting.txt','w',encoding='utf8')
    if q.text()=="S":
        adjust(2)
        f.write('2\n')
    if q.text()=="M":
        adjust(1.5)
        f.write('1.5\n')
    if q.text()=="L":
        adjust(1.2)
        f.write('1.2\n')
    f.close()
class Opration(object):
    global sheet
    def getSum(self):
        sum=0
        for row in range(sheet.nrows):
            for col in range(sheet.ncols):
                sum+=sheet.cell_value(row,col)
        ui.textBrowser.setText("总和 = %s"%sum)
    def drawTendency(self):
        import numpy as np
        import matplotlib.pyplot as plt
        x = np.linspace(0, sheet.nrows,sheet.nrows)
        y=[]
        for row in range(sheet.nrows):
            for col in range(sheet.ncols):
                y.append( sheet.cell_value(row, col))
        plt.plot(x, y)
        plt.legend()
        plt.show()
    def addRatioButton(self):
        # vlayout = QVBoxLayout()
        # vlayout.addWidget(QPushButton(str(3)))
        # vlayout.addWidget(QPushButton(str(4)))
        # vwg = QWidget()
        # vwg.setLayout(vlayout)
        pass

def op(opchoice):

    if flag==0: #判断表格是否读入
        ui.textBrowser.setText("请导入数据")
        return
    text = opchoice.text()
    opr=Opration()
    if text=="getSum":
        opr.getSum()
    if text=="drawTendency":
        opr.drawTendency()
    if text=="addRatioButton":
        opr.addRatioButton()
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)#生成应用
    window = QtWidgets.QMainWindow()#生成窗口q
    ui = Ui_MainWindow()#使用QTdesigner自动创建的类
    ui.setupUi(window)
    adjust()
    window.show()
    # ui.pushButton.clicked.connect(getSum)#点击按钮后,触发时间convert,ui作为convert的参数
    ui.menuFile.triggered[QAction].connect(importFile)#菜单触发
    ui.menuWindow.triggered[QAction].connect(setWindowSize)#菜单触发调整窗口大小
    ui.menu.triggered[QAction].connect(op)  # 菜单触发调整窗口大小
    sys.exit(app.exec_())

untitle.py(以下由QT designer生成)

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindowMainWindow")
        MainWindow.resize(552, 336)
        MainWindow.setStyleSheet("background-color:#efe")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.tableView = QtWidgets.QTableView(self.centralwidget)
        self.tableView.setObjectName("tableView")
        self.horizontalLayout_7.addWidget(self.tableView)
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setObjectName("textBrowser")
        self.horizontalLayout_7.addWidget(self.textBrowser)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setStyleSheet("background:#eee")
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 552, 18))
        self.menubar.setStyleSheet("background-color:#eee")
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setStyleSheet("color:red")
        self.menuFile.setObjectName("menuFile")
        self.menuWindow = QtWidgets.QMenu(self.menubar)
        self.menuWindow.setStyleSheet("color:blue")
        self.menuWindow.setObjectName("menuWindow")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menubar)
        self.action1 = QtWidgets.QAction(MainWindow)
        self.action1.setObjectName("action1")
        self.actionimport = QtWidgets.QAction(MainWindow)
        self.actionimport.setObjectName("actionimport")
        self.actions = QtWidgets.QAction(MainWindow)
        self.actions.setObjectName("actions")
        self.actionM = QtWidgets.QAction(MainWindow)
        self.actionM.setObjectName("actionM")
        self.actionL = QtWidgets.QAction(MainWindow)
        self.actionL.setObjectName("actionL")
        self.actiongetSUM = QtWidgets.QAction(MainWindow)
        self.actiongetSUM.setObjectName("actiongetSUM")
        self.actionget = QtWidgets.QAction(MainWindow)
        self.actionget.setObjectName("actionget")
        self.actionaddRationButton = QtWidgets.QAction(MainWindow)
        self.actionaddRationButton.setObjectName("actionaddRationButton")
        self.menuFile.addAction(self.actionimport)
        self.menuWindow.addAction(self.actions)
        self.menuWindow.addAction(self.actionM)
        self.menuWindow.addAction(self.actionL)
        self.menu.addAction(self.actiongetSUM)
        self.menu.addAction(self.actionget)
        self.menu.addAction(self.actionaddRationButton)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuWindow.menuAction())
        self.menubar.addAction(self.menu.menuAction())

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.textBrowser.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Welcome</p></body></html>"))
        self.menuFile.setTitle(_translate("MainWindow", "File"))
        self.menuWindow.setTitle(_translate("MainWindow", "Window"))
        self.menu.setTitle(_translate("MainWindow", "操作"))
        self.action1.setText(_translate("MainWindow", "1"))
        self.actionimport.setText(_translate("MainWindow", "import"))
        self.actions.setText(_translate("MainWindow", "S"))
        self.actionM.setText(_translate("MainWindow", "M"))
        self.actionL.setText(_translate("MainWindow", "L"))
        self.actiongetSUM.setText(_translate("MainWindow", "getSum"))
        self.actionget.setText(_translate("MainWindow", "drawTendency"))
        self.actionaddRationButton.setText(_translate("MainWindow", "addRationButton"))

 

posted @ 2019-08-05 11:15  淇实是我  阅读(584)  评论(0编辑  收藏  举报