用pyqt5写一个主界面,可以实现读取excel文件并进行折线图显示
时间: 2023-05-15 11:06:16 浏览: 164
可以使用以下代码实现:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox
from PyQt5.QtChart import QChart, QChartView, QLineSeries
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter
import pandas as pd
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题
self.setWindowTitle('Excel折线图')
# 设置窗口大小
self.resize(800, 600)
# 添加菜单栏
menu_bar = self.menuBar()
file_menu = menu_bar.addMenu('文件')
open_action = file_menu.addAction('打开')
open_action.triggered.connect(self.open_file)
# 创建折线图
self.chart = QChart()
self.chart.setTitle('Excel折线图')
self.chart.legend().setVisible(True)
self.chart.legend().setAlignment(Qt.AlignBottom)
# 创建折线图视图
self.chart_view = QChartView(self.chart)
self.chart_view.setRenderHint(QPainter.Antialiasing)
# 设置主窗口中心部件
self.setCentralWidget(self.chart_view)
def open_file(self):
# 打开文件对话框
file_name, _ = QFileDialog.getOpenFileName(self, '打开Excel文件', '', 'Excel文件 (*.xlsx *.xls)')
if file_name:
try:
# 读取Excel文件
df = pd.read_excel(file_name)
# 创建折线图数据系列
for column_name in df.columns:
series = QLineSeries()
series.setName(column_name)
for i, value in enumerate(df[column_name]):
series.append(i, value)
self.chart.addSeries(series)
# 设置折线图X轴和Y轴标签
self.chart.createDefaultAxes()
self.chart.axisX().setTitleText('X轴')
self.chart.axisY().setTitleText('Y轴')
except Exception as e:
QMessageBox.critical(self, '错误', str(e))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序使用了PyQt5库来创建GUI界面,使用了pandas库来读取Excel文件,使用了Qt Chart模块来创建折线图。在主界面中,我们添加了一个菜单栏,其中包含一个“打开”选项,用于打开Excel文件。当用户选择Excel文件后,程序会读取文件并创建折线图。程序会自动为每一列数据创建一个折线图数据系列,并将它们添加到折线图中。程序还会设置折线图的X轴和Y轴标签。
阅读全文