tkFileDialog无法在Windows上将结果转换为Python列表

我正在使用下面的代码(Python 2.7和Python 3.2)显示一个支持多选的“打开文件”对话框.在Linux上,文件名是python列表,但在Windows上,文件名以{C:/ Documents and Settings / IE User / My Documents / VPC_EULA.txt}返回{C:/ Documents and Settings / IE User / My Documents / VPC_ReadMe.txt },即原始TCL列表.

这是python的错误,这里有没有人知道将原始TCL列表转换成python列表的好方法?

if sys.hexversion >= 0x030000F0:
    import tkinter.filedialog as filedialog
else:
    import tkFileDialog as filedialog

options = {}
options['filetypes'] = [('vnote files', '.vnt') ,('all files', '.*')]
options['multiple'] = 1
filenames = filedialog.askopenfilename(**options)

解决方法:

问题是Tcl,Tk和Python之间的“有趣”交互,它们各自都在做一些明智的事情,但是结合起来表现不正确.深刻的问题是Tcl和Python对于类型的含义有非常不同的想法,这本身就表现为Tcl视为列表但Python视为字符串的值(Tk中的代码假定不需要) (请谨慎使用Python).可以说Python接口应该使用这样的事实,即它可以知道Tcl列表将从多重选择中返回并将其隐藏,但事实并非如此,因此您陷入了困境.

我可以(并且应该!)在Tk中修复此问题,但我不知道该修复需要多长时间才能以这种方式返回给您.

[编辑]:现在,该问题已在Tk 8.5维护分支和主开发分支中得到修复(带有this补丁).我无法预测何时才能获得固定版本,除非您从化石库中获取源代码并自行构建.

上一篇:Tkinter 之Button标签


下一篇:淘宝H5 sign加密算法