CofeehousePy/deps/scikit-image/skimage/io/_plugins/gtk_plugin.py

55 lines
1.7 KiB
Python

from .util import prepare_for_display, window_manager, GuiLockError
try:
# we try to acquire the gui lock first
# or else the gui import might trample another
# gui's pyos_inputhook.
window_manager.acquire('gtk')
except GuiLockError as gle:
print(gle)
else:
try:
import gtk
except ImportError:
print('pygtk libraries not installed.')
print('plugin not loaded.')
window_manager._release('gtk')
else:
class ImageWindow(gtk.Window):
def __init__(self, arr, mgr):
gtk.Window.__init__(self)
self.mgr = mgr
self.mgr.add_window(self)
self.connect("destroy", self.destroy)
width = arr.shape[1]
height = arr.shape[0]
rstride = arr.strides[0]
pb = gtk.gdk.pixbuf_new_from_data(arr.data,
gtk.gdk.COLORSPACE_RGB,
False, 8, width, height,
rstride)
self.img = gtk.Image()
self.img.set_from_pixbuf(pb)
self.add(self.img)
self.img.show()
def destroy(self, widget, data=None):
self.mgr.remove_window(self)
def imshow(arr):
arr = prepare_for_display(arr)
iw = ImageWindow(arr, window_manager)
iw.show()
def _app_show():
if window_manager.has_windows():
window_manager.register_callback(gtk.main_quit)
gtk.main()
else:
print('no images to display')