2010-10-26 3 views
1

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

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. В общем, этот диалог кажется шелушащимся; У меня также были некоторые проблемы с тем, что окно не уничтожило себя при выполнении определенных способов внутри скриптов. Любая помощь будет принята с благодарностью!

+0

Ваш отступ от строк 6-10 неверен. После создания класса все будет выполнено, а не когда вы начнете его. – new123456

+0

Отступ фиксированный; код не был скопирован правильно. (Python сообщит об этом с помощью параметра IndentationError). Проблема все еще существует. Я надеялся, что кто-то попытается понять, смогут ли они воспроизвести проблему в своей системе. – Walt

ответ

0

От работы этого в IDLE, вот шаги, которые я могу видеть, происходит для меня -

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

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

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

  • Python 2.6.4
  • PyGTK 2.16.0
  • GTK 2.18.7

Просто корректность (не necessairly дело с проблемой, хотя кто знает ...) бэр ember, чтобы позвонить .destroy() для диалога после того, как вы позвоните .run() на нем.P

+0

Спасибо за ответ. Чтобы быть ясным, проблема (замедление в сеансе python) возникает после выполнения вышеперечисленных сценариев (и диалог уничтожается). Другими словами, я вижу проблему после шага 3 вашего ответа. Изучая это, я обнаружил, что у меня нет проблемы в WinXP 32. – Walt

+0

Кроме того, я обнаружил, что проблема, похоже, существует при инициализации объекта FileChooserDialog, до .run(), и это не уйти после .destroy(). Другими словами, вы можете проверить эту проблему, просто выполнив «gtk.FileChooserDialog()» (после импорта gtk). Я подозреваю, что подмножество сообщества python действительно заботится об этой проблеме - где я пытаюсь взаимодействовать с (numpy) объектами после запуска скрипта (как, например, потенциально в Matlab). – Walt

+0

Часть о XP очень странная *, поскольку у GTK нет лучшей репутации в системах Windows ... установите VirtualBox и запустите другой дистрибутив (например, Zenwalk или Mandriva), чтобы узнать, сохраняется ли эта проблема. Я * думаю * это не будет. – new123456

Смежные вопросы