Skip to main content
 首页 » 编程设计

python之在 Python GUI (GTK) 中拖放文件

2024年08月16日31youxin

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

基本上:

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

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

我正在尝试使用 Glade,但我什至不确定这是否是正确的选择。

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

请您参考如下方法:

这是开始使用 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())