摘要:
本文主要是介绍如何PYQT5中如何使用文件的读取/保存的框。具体来说,本文实现一个,点击读取按键可以弹出文件选择框,选取相应文件后在文本框中输出文件的内容。另外,也可以文件的保存。
效果图:

2.实现的功能
我们希望能够点击 读取 按键的时候弹出文件选择框,选择文件后输出文件的内容。
另外,我们可以在文本输入窗口中输入文本后点击保存,保存到自己指定的文件中。
3.实现步骤
步骤1:
新建一个widget子窗口。
步骤2:
界面的设计非常简单。包含以下几个组件:
1.
2.
3.
4.
把这些组件拖拽进来,按照喜欢的方式排列,例如可以排列成下图(我已经布过局的):

步骤3:编辑两个按键的信号/槽线(这个在前面文章已经提到了)
将读取按键的信号触发选择点击,槽的名字(函数名字)为read()
将保存按键的信号触发选择点击,槽的名字(函数名字)为save()
如下图:

保存,保存名为test.ui(名字任取)
步骤4:从.ui生成.py文件(这个在第一篇文章已经介绍了)
pyuic5 -o test.py test.ui
步骤5:编写main文件(这个在第一篇文章已经介绍了)
程序的主体框架和前面的类似,就是需要自己写额外的两个槽函数。具体如下:
from PyQt5 import QtWidgets
from test import Ui_Form
from PyQt5.QtWidgets import QFileDialog
class MyWindow(QtWidgets.QWidget,Ui_Form):
def __init__(self):
super(MyWindow,self).__init__()
self.setupUi(self)
def read(self):
file_name,ok=QFileDialog.getOpenFileName(self,'读取','/home')
if ok :
_f=open(file_name,'r')
with _f:
data=_f.read()
self.textBrowser.append(data)
self.textBrowser.append("读取成功...")
def save(self):
file_name,ok=QFileDialog.getSaveFileName(self,'读取','/home')
if ok:
_f=open(file_name,'w')
_f.write(str(self.plainTextEdit.toPlainText()))
self.textBrowser.append("保存成功...")
if __name__=="__main__":
import sys
app=QtWidgets.QApplication(sys.argv)
myshow=MyWindow()
myshow.show()
sys.exit(app.exec_())
这段程序其实和我们前面写过的类似。只有以下几点不同。
from PyQt5.QtWidgets import QFileDialog
导入了一个新的库。这个库是和文件窗口相关的。
def read(self):
file_name,ok=QFileDialog.getOpenFileName(self,'读取','/home')
if ok :
_f=open(file_name,'r')
with _f:
data=_f.read()
self.textBrowser.append(data)
self.textBrowser.append("读取成功...")
read函数,是读取的按键点击时时候触发的行为。
弹出文件选择框的核心程序只有一句就是下面这句:
file_name,ok=QFileDialog.getOpenFileName(self,'读取','/home')
getOpenFileName第一个参数是self
第二参数是文件读取框的名字。
第三参数是默认的路径。(windows用户需要稍微一下)
-----------------------------------------------------------------------
返回的两个参数,第一个参数是选择的文件的文件名
第二个参数是状态,当正确选择文件名后才会返回True,否则返回False,用以判断是否读取成功。
同理对于save函数也是类似。只是保存文件的时候用的是下面这句:
file_name,ok=QFileDialog.getSaveFileName(self,'保存','/home')
这里还有一点就是关于文档编辑器是如何读取我们输入的内容的?非常简单的,用的是下面这句:
self.plainTextEdit.toPlainText()
plainTextEdit是文档编辑器这个对象的名字。toPlainText()就是读入当前的文档编辑器的内容。(组件的使用详见其他章节)
至此,我们就完成了通过文件选择框来进行文件读取和写入两个任务。







