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

我正在使用下面的代码(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补丁).我无法预测何时才能获得固定版本,除非您从化石库中获取源代码并自行构建.
本文标题为:tkFileDialog无法在Windows上将结果转换为Python列表


基础教程推荐
- python debug查看进程和线程挂死问题和内存泄漏 2023-11-11
- 字符串如何存储在python内存模型中 2023-11-14
- windows下如何安装Python、pandas 2023-09-03
- 通过Python子进程的SSH密码 2023-11-14
- 在Fedora Linux上的Jupyter中运行Python 2和3 2023-11-14
- shell脚本安装python、pip--不需要选择安装项目 2023-09-04
- PYTHON-进程 子进程 2023-09-03
- python time时间库详解 2022-08-30
- 如何在Windows x64上的python中记录Selenium Webdriver测试执行 2023-11-13
- 我如何打开不同的linux终端以在python中输出不同种类的调试信息? 2023-11-10