我对Python还不太熟悉。我正在尝试向TKinter条目小部件输入一个文件名(完整路径)。 由于文件名的路径可能很长,我希望能够直接拖放文件 从Windows资源管理器。在Perl中,我看到了以下内容:
use Tk::DropSite;
.
.
my $mw = new MainWindow;
$top = $mw->Toplevel;
$label_entry = $top->Entry(-width => '45',. -background => 'ivory2')->pack();
$label_entry->DropSite(-dropcommand => \&drop,-droptypes => 'Win32',);
在Python中使用TKinter有类似的功能吗?
Tk没有任何命令来处理这个问题,Python也没有任何额外的Tk扩展来执行拖放应用程序,因此您需要一个扩展来执行这个操作。Tkdnd(位于http://sourceforge.net/projects/tkdnd的Tk扩展,而不是Tkdnd.py模块)对我有效。要从Python中使用它,需要一个包装器。快速搜索一个,似乎http://mail.python.org/pipermail/tkinter-discuss/2005-July/000476.html包含这样的代码。我又做了一个,因为我不喜欢另一个。我的包装器的问题是它高度未经测试,实际上我只使用了
bindtarget
函数,而且只使用了10秒左右。使用下面的包装器,您可以创建一些小部件并声明它支持接收拖动的文件。下面是一个例子:
这里是
untested_tkdnd_wrapper.py
的代码:与Tkdnd一起,您将发现一个
tkdnd.tcl
程序,它比它提供的C扩展更高一级。我没有包装这个高级代码,但是用Python复制它可能比使用这个低级包装器更有趣。自从这个问题最初发布以来,事情已经有了进展,tkdnd2.8(Tcl扩展)和TkinterDnD2(tkdnd2.8的PythonWrapper)在SourceForge.net上随时可用。
这里有一些最小的示例代码,可以完全按照您的要求执行。
您可以在Python 2.7和3.6上看到How to Install and Use TkDnD with Python 2.7 Tkinter on OSX以获取Windows和Mac的下载和安装信息。
相关问题 更多 >
编程相关推荐