В моем приложении есть кнопка GtkFileChooserButton, которую можно использовать для открытия виджета выбора и выбора одного файла ... и затем выполнения операций с этим файлом. Это работает.
Я также добавил функцию перетаскивания в кнопку. Работает, но глючит.
Короче говоря, первый dnd для FileChooserButton запускает сигнал набора файлов и, кажется, сработал, - имя меняется с «(Нет)» на имя файла, и если вы затем щелкните на кнопке появляется всплывающий виджет выбора, показывающий выбранный файл; ОДНАКО, как вы можете видеть из результатов отладки ниже, get_filename()
не возвращает имя файла! Во всяком случае, не в первый раз.
Во второй раз, когда мы добавляем файл на кнопку (будь то другой файл или тот же файл снова), все идет хорошо, и 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: Когда я сделал это, 1-й и 2-й день были фактически одним и тем же файлом.
Если вы хотите увидеть полное приложение в действии, оно находится на http://github.com/ryran/pyrite,, и я хотел бы опубликовать код, но на самом деле нет ничего, чтобы отправлять !! Я не делаю drag_dest_set (), потому что FileChooserButton уже поддерживает dnd. Так что ВСЕ, что я делаю, это определение cb для сигнала набора файлов FileChooserButton. Так эээ ... вот что:
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, но получил те же результаты.
Что еще сказать? Я начинаю думать, что это ошибка.