pygtk FileChooserDialog замедляет работу интерпретатора - PullRequest
1 голос
/ 26 октября 2010

Я пытаюсь использовать FileChooserDialog, чтобы получить собственное диалоговое окно gnome в скрипте Python. После выполнения сценария мое приглашение ipython -pylab значительно замедляется. Эта проблема также существует из простого Python. Я выделил проблему в диалоговом окне. Следующий пример (который был опубликован в другом месте в качестве примера pygtk) иллюстрирует проблему:

import pygtk
pygtk.require('2.0')
import gtk
class FileChooserDialog:
    def __init__(self):
        filechooserdialog = gtk.FileChooserDialog("FileChooserDialog Example", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))        
        response = filechooserdialog.run()
        if response == gtk.RESPONSE_OK:
            print "Selected filepath: %s" % filechooserdialog.get_filename()
        filechooserdialog.destroy()
if __name__ == "__main__":
    FileChooserDialog()

После запуска скрипта индикатор жесткого диска начинает мигать после того, как на клавиатуре набрана какая-либо клавиша - очень странное поведение! У меня нет проблемы с устаревшими gtk.FileSelection или любыми другими объектами окна GTK.

Я сейчас работаю, python 2.6.5, gtk 2.21.1, pygtk 2.17.0 в Ubuntu 10.04. В общем, этот диалог кажется ненадежным; У меня также были некоторые проблемы с окном, не разрушающим себя при выполнении определенных способов в скриптах. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 06 ноября 2010

Запустив это на холостом ходу, вот шаги, которые я вижу для меня -

  1. Сценарий запускается, и средство выбора файлов загружается
  2. Интерпретатор блокируется в ожидании FileChooserDialog.run()
  3. Переводчик возобновляет работу, когда я нажимаю, чтобы удалить его

Это не то, что вы описываете, так что я могу только предположить, что это какая-то эзотерическая, странная ошибка.

Я в более старой системе (и совершенно другом дистрибутиве), поэтому я запускаю:

  • Python 2.6.4
  • PyGTK 2.16.0
  • GTK 2.18.7

Только для корректности (не обязательно решения проблемы, хотя кто знает ...) не забудьте вызвать .destroy() для диалога после вызова .run() для него. P

...