1. 打开文件选择器
fname, _ = QFileDialog.getExistingDirectory(self, '选择文件夹', '.') # 返回选中的文件夹路径
fname, _ = QFileDialog.getOpenFileName(self, '选择文件并返回地址', '.', '表格数据(*.xls *.xlsx *.csv)') # 返回选中的文件路径
fname, _ = QFileDialog.getOpenFileNames(self, '打开文件', '.', '表格数据(*.xls *.xlsx *.csv)') # 返回选中的多个文件路径
QFileDialog.getSaveFileName(self, "保存文件", fname, '表格数据(*.xls *.xlsx *.csv)') # 存储文件
上述函数的解释如下
函数名 | 第一列 | 第二列 | 第三列 | 第四列 | |
---|---|---|---|---|---|
getExistingDirectory | self | 选择文件夹 | 默认地址 | 无 | 返回文件夹 |
getOpenFileName | self | 选择单文件 | 默认地址 | 文件格式 | 返回单文件路径 |
getOpenFileNames | self | 选择多文件 | 默认地址 | 文件格式 | 返回数据包含多文件路径 |
getSaveFileName | self | 保存文件 | 文件地址 | 文件格式 | 无 |
其中文件格式想多选择几种,可以设置如下
name, ok1 = QFileDialog.getOpenFileName(self, '打开文件', '.', '(*.xlsx);;(*.xls);;(*.csv);;All Files (*)')
# name 返回的是文件地址,ok1 返回的是文件格式,由第四列设置决定
可实现效果如下:
2. 信息弹窗
QMessageBox.information(self, '错误提示', content)
3. 调用上述功能
这两个功能需要在class类里面才能实现(目前没有找到其他办法)
class类里面还要有QWidget的信息,如下:
class QWidgetDialogDemo(QWidget):
def __init__(self):
super(QWidgetDialogDemo, self).__init__()
def suibian(self):
print("任意调用!!!")
def suibianla(self, t):
print("获得参数", t)
def suibianle(self, t):
t = t + 1
print("计算返回值", t)
return t
在这个类下面写子函数,不会出现白框或者黑框,也不需要提前预设一个界面,可以直接使用上述两个功能。
其他类直接可以调用这个类的子函数,但在下面应先进行如下预设
if __name__=="__main__":
app = QApplication(sys.argv)
QwidgetDemo = QWidgetDialogDemo()
QwidgetDemo.suibian() # 即可调用子函数
QwidgetDemo.suibianla(1) # 向子函数传参
t = QwidgetDemo.suibianle(1) # 调用子函数并返回值
4. 完整代码
from PyQt5.QtWidgets import *
class QWidgetDialogDemo(QWidget):
def __init__(self):
super(QWidgetDialogDemo, self).__init__()
# 获取文件地址
def loadPath(self, Tfile):
if Tfile == 1:
fname, _ = QFileDialog.getOpenFileName(self, '打开文件', '.', '表格数据(*.xls *.xlsx *.csv)')
else:
fname, _ = QFileDialog.getOpenFileNames(self, '打开文件', '.', '表格数据(*.xls *.xlsx *.csv)')
return fname
# 提示弹窗
def putQmsg_False(self, content):
QMessageBox.information(self, '错误提示', content)
if __name__=="__main__":
app = QApplication(sys.argv)
QwidgetDemo = QWidgetDialogDemo()
path = QwidgetDemo.loadPath(1)
QwidgetDemo.putQmsg_False(path)