【发布时间】:2014-09-30 16:03:52
【问题描述】:
我是 GTK 的新手。我一直在寻找我的问题的答案,但我没有找到任何东西。问题是我想使用 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。
提前致谢!
【问题讨论】:
标签: python file gtk pygtk filechooser