在 Python GUI (GTK) 中拖放文件

Reg*_*Reg 2 python gtk pygtk

我想编写一个小应用程序,它接受选定数量的文件,并存储所有内容的路径以供将来使用。

基本上:

例如,从 Nautilus 中选择混合(图像、音频、视频)文件(在本例中),将它们拖放到此 GUI 中,并获取要写入列表中的每个元素的绝对路径。

程序本身根本不是问题,但我在最简单的任务上失败了,也许:创建一个 GUI(我选择了 GTK,但一切都会好起来,只需要完成工作)谁接受元素并存储他们。

我正在玩 Glade,但我什至不确定这是否是正确的选择。

有人可以帮助我构建这个 GUI 或指出一些资源吗?

the*_*erd 5

这是开始使用 Glade、Gtk 和 Python 的好方法:

http://python-gtk-3-tutorial.readthedocs.io/en/latest/builder.html

并拖放:

http://python-gtk-3-tutorial.readthedocs.io/en/latest/drag_and_drop.html

使用小型工作程序进行编辑:

#!/usr/bin/env python

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
import os, sys



class GUI:
    def __init__(self):
        window = Gtk.Window()
        window.connect('destroy', Gtk.main_quit)
        textview = Gtk.TextView()
        enforce_target = Gtk.TargetEntry.new('text/plain', Gtk.TargetFlags(4), 129)
        textview.drag_dest_set(Gtk.DestDefaults.ALL, [enforce_target], Gdk.DragAction.COPY)
        textview.connect("drag-data-received", self.on_drag_data_received)
        #textview.drag_dest_set_target_list([enforce_target])
        window.add(textview)
        window.show_all()

    def on_drag_data_received(self, widget, drag_context, x,y, data,info, time):
        print (data.get_text())

def main():
    app = GUI()
    Gtk.main()
        
if __name__ == "__main__":
    sys.exit(main())
Run Code Online (Sandbox Code Playgroud)