Я новичок в ГТК. Я искал ответ на свой вопрос, но ничего не нашел. Дело в том, что я хочу использовать GTK FileChooser для выбора файла. Я смотрел на пример, доступный здесь:
http://pygtk.org/pygtk2tutorial/examples/filechooser.py
Затем я использовал знания, полученные в примере, чтобы добавить эту функцию в свою программу. Однако я заметил, что когда я выбираю файл, окно зависает. Под этим я подразумеваю, что окно выбора файла никогда не исчезает, пока я не закрою всю программу.
Итак, я вернулся к примеру и просто подождал некоторое время, чтобы увидеть, не было ли уничтожено окно. И на самом деле это не так. Окно выбора файла исчезает только после завершения работы программы. Вот код:
#!/usr/bin/env python
# example filechooser.py
import pygtk
pygtk.require('2.0')
import gtk
import time
# Check for new pygtk: this is new class in PyGtk 2.4
if gtk.pygtk_version < (2,3,90):
print "PyGtk 2.3.90 or later required for this example"
raise SystemExit
dialog = gtk.FileChooserDialog("Open..",
None,
gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN, gtk.RESPONSE_OK))
dialog.set_default_response(gtk.RESPONSE_OK)
filter = gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
dialog.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("Images")
filter.add_mime_type("image/png")
filter.add_mime_type("image/jpeg")
filter.add_mime_type("image/gif")
filter.add_pattern("*.png")
filter.add_pattern("*.jpg")
filter.add_pattern("*.gif")
filter.add_pattern("*.tif")
filter.add_pattern("*.xpm")
dialog.add_filter(filter)
response = dialog.run()
if response == gtk.RESPONSE_OK:
print dialog.get_filename(), 'selected'
elif response == gtk.RESPONSE_CANCEL:
print 'Closed, no files selected'
dialog.destroy()
time.sleep(3)
И в эти 3 секунды окно есть, поэтому я думаю, что оно никогда не уничтожается, и мне интересно, почему. Даже если я подожду 10 секунд, окно никогда не исчезнет, пока программа не завершится. Мне нужно знать, есть ли что-то не так в примере или что я делаю неправильно, поскольку я не хотел бы, чтобы это происходило в моей программе.
На всякий случай я использую Python 2.7.3 и Debian 7.
Заранее спасибо!