在Ubuntu18.04上,用https://so.csdn.net/so/search?q=pyqt5&spm=1001.2101.3001.7020写的项目,想在里面实现打开文件选择框的功能,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)))
效果图:
</article>