Python打开文件选择框(pyqt5自带打开文件框功能存在问题)

 在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)))

效果图:

猜你喜欢

转载自blog.csdn.net/whuzhang16/article/details/109363193