【发布时间】:2012-01-28 19:20:36
【问题描述】:
我的应用程序有一个 GtkFileChooserButton,您可以使用它来打开选择器小部件并选择单个文件......然后对该文件执行操作。这行得通。
我还为按钮添加了拖放功能。可以,但是有问题。
简而言之,FileChooserButton 的第一个 dnd 触发了文件设置信号,并且似乎已经起作用, -- 名称从“( None )”更改为文件名,如果您随后单击按钮,它会弹出一个选择器小部件,显示选择的正确文件; 但是,正如您从下面的调试输出中看到的那样,get_filename() 没有返回文件名!反正不是第一次。
我们第二次将文件 dnd 到按钮上(无论是不同的文件还是相同的文件),一切顺利,get_filename() 返回文件名。为什么?
当我将三个文件拖到按钮上时,这是我的程序的调试输出,一次一个:
[on_file-set] FileChooserButton.get_filename() output:
None
[on_file-set] FileChooserButton.get_filename() output:
'/home/ryran/Desktop/priv.txt'
[on_file-set] FileChooserButton.get_filename() output:
'/home/ryran/Desktop/kinamppost'
PS:当我这样做时,第一个和第二个 dnd 实际上是同一个文件。
如果您想查看完整的应用程序,请访问http://github.com/ryran/pyrite,我很想发布代码,但实际上没有任何内容可发布!我没有做 drag_dest_set() 因为 FileChooserButton 已经支持 dnd。所以我所做的只是为 FileChooserButton 的文件设置信号定义一个 cb。所以呃..是这样的:
def action_chooserbtn_file_set(self, widget):
print "[on_file-set] FileChooserButton.get_filename() output:\n{!r}\n".format(widget.get_filename())
为了记录,我还尝试通过定义 drag_dest_set 来执行所有这些操作,但得到了相同的结果。
还有什么要说的?我开始认为这是一个错误。
【问题讨论】:
标签: python gtk pygtk drag-and-drop