怎么设计一个界面,界面有一个按钮,点击该按钮选择文件,并读取文件内容显示在该界面上
大概出来长这样
怎么设计一个界面,界面有一个按钮,点击该按钮选择文件,并读取文件内容显示在该界面上
下面是我写的代码,我把txt,doc,docx,xls,xlsx这几种格式都试了一下,可以正常读取和显示在文本框内,只是关于一些文本框大小细节等问题,需要修改一下。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class filedialogdemo(QWidget):
def __init__(self, parent=None):
super(filedialogdemo, self).__init__(parent)
layout = QVBoxLayout()
self.le = QLabel("")
layout.addWidget(self.le)
self.btn1 = QPushButton("打开文本文件")
self.btn1.clicked.connect(self.getfiles)
layout.addWidget(self.btn1)
self.contents = QTextEdit()
layout.addWidget(self.contents)
self.setLayout(layout)
self.setWindowTitle("打开文件示例")
def getfiles(self):
dlg = QFileDialog()
dlg.setFileMode(QFileDialog.AnyFile)
# QFileDialog.ExistingFiles可选择打开多个文件,返回文件路径列表
# dlg.setFileMode(QFileDialog.ExistingFiles)
dlg.setFilter(QDir.Files)
if dlg.exec_():
filenames = dlg.selectedFiles()
file_name = filenames[0]
if file_name.endswith('doc') or file_name.endswith('docx'):
import docx
data = docx.Document(file_name)
content = ''
for each in data.paragraphs:
content += str(each.text)
content += '\n'
elif file_name.endswith('xls') or file_name.endswith('xlsx'):
import pandas as pd
xlsx = pd.ExcelFile(file_name)
content = str(pd.read_excel(xlsx))
else:
with open(file_name, 'r', encoding='utf-8',errors = 'ignore') as f:
content = f.read()
self.contents.setText(content)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = filedialogdemo()
ex.show()
sys.exit(app.exec_())