PyQt实现读取文件内容并绘制曲线

1 篇文章 0 订阅
1 篇文章 0 订阅

PyQt实现读取文件内容并绘制曲线
数据准备:数据集上传到GitHub(https://github.com/ZY-future/daily-practice)
在这里插入图片描述
能够实现读取数据,并将文件中的内容绘制到控件中,我是用GraphicsView显示绘图,但是在显示绘图时还没能找到合适的的方法,由于时间的原因,将输出的图像使用matplotlib进行显示,最终显示的界面效果如下:
在这里插入图片描述
开发环境及平台:Windows10,VSC、Desinger、pycharm。
做出这个界面大致需要这几步:QT Desinger中布置控件——>定义槽(这里只定义将Exit和界面关闭)——>在pycharm中将Desinger布置的控件.ui文件转化为.py文件,便于开发——>获取输入框内容并按照要求进行显示。
具体的代码如下:
.py文件

import os
import sys

import pandas as pd
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow,
                             QPushButton)
import untitled
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
#设置正常显示字符
plt.rcParams['axes.unicode_minus'] = False

def Window1():
    row1=int(ui.lineEdit.text())
    print(row1)
    list1=int(ui.lineEdit_2.text())
    print(list1)
    #显示图像
    print("文件为",ui.textEdit.toPlainText())
    file_path=ui.textEdit.toPlainText()
    data=pd.read_csv(file_path,header=None,sep='\t')
    # ui.graphicsView.showNormal(data.iloc[:20,:1].plot())
    ui.graphicsView.clearMask()
    data.iloc[row1:list1,:1].plot()
    plt.title('第一列数据')
    plt.show()
def Window2():
    row2=int(ui.lineEdit_3.text())
    print(row2)
    list2=int(ui.lineEdit_4.text())
    print(list2)
    file_path=ui.textEdit.toPlainText()
    data=pd.read_csv(file_path,header=None,sep='\t')
    ui.graphicsView.clearMask()
    data.iloc[row2:list2,1:2].plot()
    plt.title('第二列数据')
    plt.show()
def Window3():
    row3=int(ui.lineEdit_5.text())
    print(row3)
    list3=int(ui.lineEdit_6.text())
    print(list3)
    file_path=ui.textEdit.toPlainText()
    data=pd.read_csv(file_path,header=None,sep='\t')
    ui.graphicsView.clearMask()
    data.iloc[row3:list3,2:3].plot()
    plt.title('第三列数据')
    plt.show()
def Window4():
    row4=int(ui.lineEdit_7.text())
    print(row4)
    list4=int(ui.lineEdit_8.text())
    print(list4)
    file_path=ui.textEdit.toPlainText()
    data=pd.read_csv(file_path,header=None,sep='\t')
    ui.graphicsView.clearMask()
    data.iloc[row4:list4,3:4].plot()
    plt.title('第四列数据')
    plt.show()
def showDialog(self):
#获取文件路径
    getfile=QFileDialog.getOpenFileName() 
    data=getfile[0]
    ui.textEdit.setText(data)
def click_button():
    ui.pushButton_6.clicked.connect(showDialog)
    ui.pushButton_2.clicked.connect(Window1)
    ui.pushButton_3.clicked.connect(Window2)
    ui.pushButton_4.clicked.connect(Window3)
    ui.pushButton_5.clicked.connect(Window4)
if __name__ == "__main__":
    app=QApplication(sys.argv)
    mainwindow=QMainWindow()
    ui=untitled.Ui_Dialog()
    ui.setupUi(mainwindow)
    mainwindow.show()
    click_button()
    print(ui.textEdit.toPlainText())
    sys.exit(app.exec_())

.ui文件转为.py文件:

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

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

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow,QApplication,QTextEdit,QAction,QFileDialog

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(1071, 835)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(460, 800, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_6 = QtWidgets.QPushButton(Dialog)
        self.pushButton_6.setGeometry(QtCore.QRect(40, 200, 93, 28))
        self.pushButton_6.setObjectName("pushButton_6")
        self.label_9 = QtWidgets.QLabel(Dialog)
        self.label_9.setGeometry(QtCore.QRect(20, 100, 72, 15))
        self.label_9.setObjectName("label_9")
        self.graphicsView = QtWidgets.QGraphicsView(Dialog)
        self.graphicsView.setGeometry(QtCore.QRect(220, 0, 631, 192))
        self.graphicsView.setObjectName("graphicsView")
        self.graphicsView_2 = QtWidgets.QGraphicsView(Dialog)
        self.graphicsView_2.setGeometry(QtCore.QRect(220, 200, 631, 192))
        self.graphicsView_2.setObjectName("graphicsView_2")
        self.graphicsView_3 = QtWidgets.QGraphicsView(Dialog)
        self.graphicsView_3.setGeometry(QtCore.QRect(220, 400, 631, 192))
        self.graphicsView_3.setObjectName("graphicsView_3")
        self.graphicsView_4 = QtWidgets.QGraphicsView(Dialog)
        self.graphicsView_4.setGeometry(QtCore.QRect(220, 600, 631, 192))
        self.graphicsView_4.setObjectName("graphicsView_4")
        self.textEdit = QtWidgets.QTextEdit(Dialog)
        self.textEdit.setGeometry(QtCore.QRect(10, 120, 171, 51))
        self.textEdit.setObjectName("textEdit")
        self.widget = QtWidgets.QWidget(Dialog)
        self.widget.setGeometry(QtCore.QRect(880, 30, 173, 130))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.lineEdit = QtWidgets.QLineEdit(self.widget)
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.lineEdit)
        self.label_2 = QtWidgets.QLabel(self.widget)
        self.label_2.setObjectName("label_2")
        self.verticalLayout.addWidget(self.label_2)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.verticalLayout.addWidget(self.lineEdit_2)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.verticalLayout.addWidget(self.pushButton_2)
        self.widget1 = QtWidgets.QWidget(Dialog)
        self.widget1.setGeometry(QtCore.QRect(880, 240, 173, 130))
        self.widget1.setObjectName("widget1")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget1)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_4 = QtWidgets.QLabel(self.widget1)
        self.label_4.setObjectName("label_4")
        self.verticalLayout_2.addWidget(self.label_4)
        self.lineEdit_3 = QtWidgets.QLineEdit(self.widget1)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.verticalLayout_2.addWidget(self.lineEdit_3)
        self.label_3 = QtWidgets.QLabel(self.widget1)
        self.label_3.setObjectName("label_3")
        self.verticalLayout_2.addWidget(self.label_3)
        self.lineEdit_4 = QtWidgets.QLineEdit(self.widget1)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.verticalLayout_2.addWidget(self.lineEdit_4)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget1)
        self.pushButton_3.setObjectName("pushButton_3")
        self.verticalLayout_2.addWidget(self.pushButton_3)
        self.widget2 = QtWidgets.QWidget(Dialog)
        self.widget2.setGeometry(QtCore.QRect(870, 430, 173, 130))
        self.widget2.setObjectName("widget2")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget2)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.label_5 = QtWidgets.QLabel(self.widget2)
        self.label_5.setObjectName("label_5")
        self.verticalLayout_3.addWidget(self.label_5)
        self.lineEdit_5 = QtWidgets.QLineEdit(self.widget2)
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.verticalLayout_3.addWidget(self.lineEdit_5)
        self.label_6 = QtWidgets.QLabel(self.widget2)
        self.label_6.setObjectName("label_6")
        self.verticalLayout_3.addWidget(self.label_6)
        self.lineEdit_6 = QtWidgets.QLineEdit(self.widget2)
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.verticalLayout_3.addWidget(self.lineEdit_6)
        self.pushButton_4 = QtWidgets.QPushButton(self.widget2)
        self.pushButton_4.setObjectName("pushButton_4")
        self.verticalLayout_3.addWidget(self.pushButton_4)
        self.widget3 = QtWidgets.QWidget(Dialog)
        self.widget3.setGeometry(QtCore.QRect(880, 630, 173, 130))
        self.widget3.setObjectName("widget3")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.widget3)
        self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.label_7 = QtWidgets.QLabel(self.widget3)
        self.label_7.setObjectName("label_7")
        self.verticalLayout_4.addWidget(self.label_7)
        self.lineEdit_7 = QtWidgets.QLineEdit(self.widget3)
        self.lineEdit_7.setObjectName("lineEdit_7")
        self.verticalLayout_4.addWidget(self.lineEdit_7)
        self.label_8 = QtWidgets.QLabel(self.widget3)
        self.label_8.setObjectName("label_8")
        self.verticalLayout_4.addWidget(self.label_8)
        self.lineEdit_8 = QtWidgets.QLineEdit(self.widget3)
        self.lineEdit_8.setObjectName("lineEdit_8")
        self.verticalLayout_4.addWidget(self.lineEdit_8)
        self.pushButton_5 = QtWidgets.QPushButton(self.widget3)
        self.pushButton_5.setObjectName("pushButton_5")
        self.verticalLayout_4.addWidget(self.pushButton_5)

        self.retranslateUi(Dialog)
        #点击事件,定义槽
        self.pushButton.clicked.connect(Dialog.close)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "Exit"))
        self.pushButton_6.setText(_translate("Dialog", "选择文件"))
        self.label_9.setText(_translate("Dialog", "文件路径"))
        self.label.setText(_translate("Dialog", "row1"))
        self.label_2.setText(_translate("Dialog", "list1"))
        self.pushButton_2.setText(_translate("Dialog", "显示"))
        self.label_4.setText(_translate("Dialog", "row2"))
        self.label_3.setText(_translate("Dialog", "list2"))
        self.pushButton_3.setText(_translate("Dialog", "显示"))
        self.label_5.setText(_translate("Dialog", "row3"))
        self.label_6.setText(_translate("Dialog", "list3"))
        self.pushButton_4.setText(_translate("Dialog", "显示"))
        self.label_7.setText(_translate("Dialog", "row4"))
        self.label_8.setText(_translate("Dialog", "list4"))
        self.pushButton_5.setText(_translate("Dialog", "显示"))

如有不足,还望指正。

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值