pyqt5 文件读写
时间: 2025-02-06 08:10:50 浏览: 51
### PyQt5 文件读写操作
#### 文本文件读取与保存
为了执行文本文件的读取和保存,在PyQt5中可以利用`QFileDialog`来获取文件路径,并使用Python标准库中的方法来进行实际的数据处理[^1]。
对于简单的文本文件读取,可以通过如下方式实现:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QFileDialog
import sys
class TextEditor(QMainWindow):
def __init__(self):
super().__init__()
text_edit = QTextEdit()
self.setCentralWidget(text_edit)
open_action = QAction('Open', self)
open_action.triggered.connect(self.open_file_dialog)
save_action = QAction('Save', self)
save_action.triggered.connect(self.save_file_dialog)
menubar = self.menuBar()
file_menu = menubar.addMenu('&File')
file_menu.addAction(open_action)
file_menu.addAction(save_action)
def open_file_dialog(self):
options = QFileDialog.Options()
filename, _ = QFileDialog.getOpenFileName(
self,
"Choose a file",
"",
"All Files (*);;Text Files (*.txt)",
options=options
)
if filename:
with open(filename, 'r') as f:
content = f.read() # Read the entire contents of the file at once.
self.centralWidget().setText(content) # Set this to your widget that displays data.
def save_file_dialog(self):
options = QFileDialog.Options()
filename, _ = QFileDialog.getSaveFileName(
self,
"Save File As...",
"",
"Text Files (*.txt);;All Files (*)",
options=options
)
if filename:
with open(filename, 'w') as f:
f.write(self.centralWidget().toPlainText())
if __name__ == '__main__':
app = QApplication(sys.argv)
editor = TextEditor()
editor.show()
sys.exit(app.exec_())
```
这段代码展示了如何创建一个简易的文字编辑器,它允许用户打开并查看`.txt`类型的文档以及将当前的内容另存为新的文本文件。
#### Excel 文件读写
当涉及到Excel文件的操作时,则可借助于第三方库pandas配合`QTableView`组件完成数据表格形式的显示与修改。下面是一个简化版的例子说明怎样连接Excel文件至GUI界面以便浏览其内容[^5]。
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QTableView
from PyQt5.QtCore import Qt
import pandas as pd
from PyQt5.QtGui import QStandardItemModel, QStandardItem
class SpreadsheetViewer(QMainWindow):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
button_open_excel = QPushButton("Open Excel", self)
button_open_excel.clicked.connect(self.load_excel_data)
self.table_view = QTableView()
container_widget = QWidget()
container_widget.setLayout(layout)
layout.addWidget(button_open_excel)
layout.addWidget(self.table_view)
self.setCentralWidget(container_widget)
def load_excel_data(self):
excel_path, _ = QFileDialog.getOpenFileName(None,"Select an Excel file","","Excel files (*.xlsx *.xls)")
if not excel_path:
return
df = pd.read_excel(excel_path)
model = QStandardItemModel(len(df.index),len(df.columns))
model.setHorizontalHeaderLabels(df.columns.values.tolist())
for row in range(len(df.index)):
for column in range(len(df.columns)):
item = QStandardItem(str(df.iat[row,column]))
model.setItem(row, column, item)
self.table_view.setModel(model)
if __name__ == "__main__":
application = QApplication([])
window = SpreadsheetViewer()
window.setWindowTitle("Spreadsheet Viewer")
window.resize(800,600)
window.show()
exit(application.exec_())
```
此段脚本实现了基本的功能——即让用户可以选择本地磁盘上的Excel工作簿,并将其转换成可以在界面上滚动查看的形式。
阅读全文
相关推荐


















