Проблемы Pygtk с перетаскиванием: файл для GtkFileChooserButton - PullRequest
1 голос
/ 28 января 2012

В моем приложении есть кнопка 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, но получил те же результаты.

Что еще сказать? Я начинаю думать, что это ошибка.

1 Ответ

1 голос
/ 21 февраля 2012

Оказывается, это действительно ошибка GTK +. Поговорил с разработчиком на IRC. Он помог мне понять это, а затем призвал меня опубликовать отчет об ошибке, который я сделал - https://bugzilla.gnome.org/show_bug.cgi?id=669718

...