我开始学习Python,我想现在在Windows操作系统下创建一个从一个文件到另一个文件(例如,从png到avi或其他文件扩展名之间)的转换器。在
我写了一个脚本,它很好地完成了转换过程,但我想改进它的功能(然后在图形方面);我使用Tkinter,我想加载文件,可以拖放它们作为下一个转换命令的输入,而不是打开一个文件夹,将文件作为“输入源”放在其中。我找到了这个主题(python drag and drop explorer files to tkinter entry widget),我是这样使用它的:
import sys
import os
import Tkinter
from tkdnd_wrapper import TkDND
import shlex, subprocess
from subprocess import Popen, PIPE
import glob
import shutil
root = Tkinter.Tk()
dnd = TkDND(root)
entry = Tkinter.Entry()
entry.grid()
def handle(event):
inputfilespath = event.data
event.widget.insert(0, inputfilespath)
filesdir = os.path.dirname(os.path.realpath(inputfilespath))
files = glob.iglob(os.path.join(filesdir, "*.myext"))
for inputfilespath in files:
if os.path.isfile(inputfilespath):
subprocess1 = subprocess.Popen([...conversion command given as list, not string...], shell=True)
print "\n\nConversione in corso..."
subprocess1.wait()
subprocess1.terminate()
print "\n\nProcesso terminato!"
dnd.bindtarget(entry, handle, 'text/uri-list')
root.mainloop()
问题是:
如果文件名有空格,则不会进行转换,并且进程结束时甚至不会通知任何错误。”inputfilespath“希望成为我选择的所有输入文件的通用名称,并且(对于我读到的内容)我不能(?)对希望包含文件名空白的环境变量使用引号。。。
只需使用tkinter文件对话框,然后让它将文件插入到输入框中。在
示例:
使用StringVar的示例:
^{pr2}$希望这有帮助!在
似乎包含空白的文件名用大括号括起来 (Tcl列表样式)。你应该可以得到一个可用的文件列表 比如:
相关问题 更多 >
编程相关推荐