fileopenbox中default和filetypes两个参数
本帖最后由 努力去见你 于 2020-4-29 17:15 编辑下方代码为小甲鱼的想知道以下几个问题
1.default="hello*.txt"是只显示文件名为hello.txt的文件,那default="*.txt"和default="*"有什么区别
2.file_path = g.fileopenbox(default="*",filetypes="*.py")只显示后缀为.py的文件,那下方代码default="*.txt"的意义是什么,有什么用途
3. filetypes = [["*.css", "css 文件"],["*.html", ".*.htm", "HTML files"],["*.exe","EXE 文件"]]这种写法default应该怎么写
import easygui as g
import os
file_path = g.fileopenbox(default="*.txt")
with open(file_path) as f:
title = os.path.basename(file_path)
msg = "文件【%s】的内容如下:" % title
text = f.read()
g.textbox(msg, title, text) 1. default="hello*.txt" 是显示文件名为 hello(xxx).txt(也就是 hello 后面还可以跟东西)的文件,default="*.txt" 和 default="*" 的区别是,如果 default="*.txt",那当用户输入文件名为 abc 会自动在后面加上后缀 .txt,即最后返回 abc.txt(如果用户已经输入了后缀则不会添加后缀),而如果 default="*.txt" 则不会自动添加后缀。
2. 如上。 1.default="*.txt"的意思是默认显示后缀名是txt的文件,而default="*"是显示所有文件,不要这句也行,默认就这个。
2.default="*",filetypes="*.py"实际上写错了,应该是:default="*",filetypes=["*.py"],没方括号filetypes无效,改正后的意思是默认显示所有文件,在文件类型的下拉列表里多了一项*.py可以选择过滤文件。而default="*.txt"则默认显示所有的txt文件,想要显示所有文件,可以在文件类型下拉列表里选择All files。
3.filetypes参数是在文件类型下拉列表中添加过滤的选项,和default没直接关系,你也可以在default指定优先显示的文件类型,即使default指定的文件类型在filetypes里没有,也会加入到文件类型下拉列表里。default不指定则是默认显示所有文件。
其实default有个更重要的功能,选择默认初始目录。
本帖最后由 努力去见你 于 2020-4-30 09:05 编辑
txxcat 发表于 2020-4-29 18:17
1.default="*.txt"的意思是默认显示后缀名是txt的文件,而default="*"是显示所有文件,不要这句也行,默认 ...
1,default="*.txt"的意思是默认显示后缀名是txt的文件
这个我run了之后,还会显示后缀名是py的文件
default="*",filetypes=['*.txt'],我这么写之后只显示后缀名是txt的文件了
还是有点不理解 努力去见你 发表于 2020-4-30 09:04
1,default="*.txt"的意思是默认显示后缀名是txt的文件
这个我run了之后,还会显示后缀名是py的文件
...
你的easygui版本是多少?我的是0.98.1,我发现0.97的fileopen_box有bug,但不清楚和你出现的现象有没有关联,如果你的版本不是最新的,试试升级easygui。 0.97运行不起来,但是检查代码发现和0.98.1没太大区别,运行结果应该是一样的,更老的版本我就没了,下面是我0.98.1运行的代码和结果,你核对一下输入代码是否有不一致的:
fileopenbox(default='*.txt')
fileopenbox(default='*',filetypes=['*.txt'])
txxcat 发表于 2020-4-30 10:42
0.97运行不起来,但是检查代码发现和0.98.1没太大区别,运行结果应该是一样的,更老的版本我就没了,下面是 ...
我用的应该也是0.98
但是我输入这两段代码,和你的结果正好反过来{:9_239:},凌乱了 努力去见你 发表于 2020-4-30 11:22
我用的应该也是0.98
但是我输入这两段代码,和你的结果正好反过来,凌乱了
那只剩下一种可能性了,就是代码改了,你打开fileopen_box.py,看看下面注释的是否一样:
localRoot = tk.Tk()
localRoot.withdraw()
initialbase, initialfile, initialdir, filetypes = fbs.fileboxSetup( #<---这句的顺序是否一样
default, filetypes)
# ------------------------------------------------------------
# if initialfile contains no wildcards; we don't want an
# initial file. It won't be used anyway.
# Also: if initialbase is simply "*", we don't want an
# initialfile; it is not doing any useful work.
# ------------------------------------------------------------
if (initialfile.find("*") < 0) and (initialfile.find("?") < 0):
initialfile = None
elif initialbase == "*":
initialfile = None
func = ut.tk_FileDialog.askopenfilenames if multiple else ut.tk_FileDialog.askopenfilename
ret_val = func(parent=localRoot,
title=ut.getFileDialogTitle(msg, title),
initialdir=initialdir, initialfile=initialfile,
filetypes=filetypes
) #<---还有这句是否一样
if not ret_val or ret_val == '':
return None
if multiple:
f =
else:
try:
f = os.path.normpath(ret_val)
except AttributeError as e:
print("ret_val is {}".format(ret_val))
raise e
localRoot.destroy()
if not f:
return None
return f
还有fileboxsetup.py,只看返回那一句:
return initialbase, initialfile, initialdir, filetypes <---这句是否一样 txxcat 发表于 2020-4-30 11:38
那只剩下一种可能性了,就是代码改了,你打开fileopen_box.py,看看下面注释的是否一样:
我看了一下,和你的一样{:9_220:},还是谢谢大神了,我自己再查查吧
页:
[1]