Eric6与pyqt5学习笔记 9【QFileDialog及BUG如何处理,读取文件内容】

时间:2021-02-21 23:01:49

标准文件打开保存框QFileDialog

  • 单个文件打开 QFileDialog.getOpenFileName()

  • 多个文件打开 QFileDialog.getOpenFileNames()

  • 文件夹选取 QFileDialog.getExistingDirectory()

  • 文件保存 QFileDialog.getSaveFileName()

from PyQt5 import QtWidgets  
from PyQt5.QtWidgets import QFileDialog

class MyWindow(QtWidgets.QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.myButton = QtWidgets.QPushButton(self)
self.myButton.setObjectName("myButton")
self.myButton.setText("Test")
self.myButton.clicked.connect(self.msg)

def msg(self):
directory1 = QFileDialog.getExistingDirectory(self,
"选取文件夹",
"C:/") #起始路径
print(directory1)

fileName1, filetype = QFileDialog.getOpenFileName(self,
"选取文件",
"C:/",
"All Files (*);;Text Files (*.txt)") #设置文件扩展名过滤,注意用双分号间隔
print(fileName1,filetype)

files, ok1 = QFileDialog.getOpenFileNames(self,
"多文件选择",
"C:/",
"All Files (*);;Text Files (*.txt)")
print(files,ok1)

fileName2, ok2 = QFileDialog.getSaveFileName(self,
"文件保存",
"C:/",
"All Files (*);;Text Files (*.txt)")

if __name__=="__main__":
import sys

app=QtWidgets.QApplication(sys.argv)
myshow=MyWindow()
myshow.show()
sys.exit(app.exec_())

报错处理

自己实际开发中遇到了

>>> Exception "unhandled TypeError"
getOpenFileName(parent: QWidget = None, caption: str = '', directory: str = '', filter: str = '', initialFilter: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = 0): argument 1 has unexpected type 'Ui_MainWindow'
File: F:\GitHub\RSAsoftware\Ui_index.py, Line: 73

这种报错,百度google了一番并未找到解决方法,有人说参数不对应,但查看文档手册,参数没问题,最后解决办法,将self.action.triggered.connect(self.openFile) 单独弄出来,原理未知,具体代码可参考下述博客形式:
pyqt5 实现 下拉菜单 + 打开文件
Eric6与pyqt5学习笔记 9【QFileDialog及BUG如何处理,读取文件内容】

读取文件内容

fileName1, filetype1 = QFileDialog.getOpenFileName(self,  "选取文件",  "C:/",  "All Files (*);;Text Files (*.txt)")   #设置文件扩展名过滤,注意用双分号间隔 
#print(fileName1,filetype1)
file = open(fileName1,'r')
data = file.read()
file.close()
self.textEdit.setText(data)

获取文件名后使用open去读取