在Ubuntu18.04上,用pyqt5写的项目,想在里面实现打开文件选择框的功能,pyqt5的实现借助QFileDialog,代码为:
# 这段代码在网上很多,也不知道哪个是原版了。。。
def msg(self):
directory1 = QFileDialog.getExistingDirectory(self,
"选取文件夹",
"./") #起始路径
print(directory1)
fileName1, filetype = QFileDialog.getOpenFileName(self,
"选取文件",
"./",
"All Files (*);;Text Files (*.txt)") #设置文件扩展名过滤,注意用双分号间隔
print(fileName1,filetype)
files, ok1 = QFileDialog.getOpenFileNames(self,
"多文件选择",
"./",
"All Files (*);;Text Files (*.txt)")
print(files,ok1)
fileName2, ok2 = QFileDialog.getSaveFileName(self,
"文件保存",
"./",
"All Files (*);;Text Files (*.txt)")
但是在实际运行时,发现打开文件框时只能在home目录下,无法直接到达指定目录,返回的filename也不是文件完整路径,而是“run/...../filename”。
pyqt5自带的实现不了,就退到Python的方式实现吧。Python是由tkinter实现该功能,首先安装包:
sudo apt-get install python-tk
# 如果是Python3
sudo apt-get install python3-tk
实现代码:
from tkinter import *
import tkinter.filedialog
# 前两行是为了解决运行时,tk会弹出小窗口这一问题
root = tkinter.Tk()
root.withdraw()
# 其中,title为文件选择框的标题,filetypes为需要显示的文件类型,initialdir为默认文件路径
filename = tkinter.filedialog.askopenfilename(title='选择.nov文件', filetypes=[('Nov', '.nov')],
initialdir=(os.path.expanduser(GlobalDefines.case_generate_path)))
效果图: