在Python(Windows)中拖放多个文件
我开始学习Python,我想现在在Windows操作系统下创建一个从一个文件到另一个文件(例如,从png到avi或其他文件扩展名之间)的转换器 我写了一个脚本,它工作得很好,并且完成了转换过程,但是我想在功能上(然后在图形上)改进它;我使用的是Tkinter,我想加载文件时可以拖放它们作为下一个转换命令的输入,而不是打开一个文件夹,在其中放置文件作为“输入源”。我找到了这个主题()并以这种方式使用它:在Python(Windows)中拖放多个文件,python,file-io,drag-and-drop,tkinter,whitespace,Python,File Io,Drag And Drop,Tkinter,Whitespace,我开始学习Python,我想现在在Windows操作系统下创建一个从一个文件到另一个文件(例如,从png到avi或其他文件扩展名之间)的转换器 我写了一个脚本,它工作得很好,并且完成了转换过程,但是我想在功能上(然后在图形上)改进它;我使用的是Tkinter,我想加载文件时可以拖放它们作为下一个转换命令的输入,而不是打开一个文件夹,在其中放置文件作为“输入源”。我找到了这个主题()并以这种方式使用它: import sys import os import Tkinter from tkdnd_
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()
问题是:
只需使用tkinter文件对话框,然后让它将文件插入输入框 例如:
filedialog = tkFileDialog.askopenfilenames(*options*)
entry.insert(END, filedialog)
使用StringVar的示例:
entryVar = StringVar()
entry = Entry(textvariable=entryVar)
filedialog = tkFileDialog.askopenfilenames(*options*)
entryVar.set(filedialog
希望这有帮助 似乎包含空格的文件名正在用大括号括起来 (Tcl列表样式)。要获得可用的文件列表,您应该能够 比如:
import Tkinter
from untested_tkdnd_wrapper import TkDND
def handle(event):
files = root.tk.splitlist(event.data)
for filename in files:
event.widget.insert('end', filename)
root = Tkinter.Tk()
lb = Tkinter.Listbox(root, width=50)
lb.pack(fill='both', expand=1)
dnd = TkDND(root)
dnd.bindtarget(lb, handle, 'text/uri-list')
root.mainloop()
只是做了一个快速编辑,因为代码格式出现了错误。它的编写方式也是针对Python2的,因为我假设它是您使用的,但是如果您需要Python3中的一个,请询问,我将发布它…你好,Daniel!非常感谢您的回复!从日期可以看出,我用wxPython解决了自己的问题,但我会记住你的建议:-)谢谢!非常感谢你!我在一个函数上浪费了6个小时,
root.tk.splitlist