Создание цветовой карты RGBA в PyGTK
У меня есть проект на Python 2.7 и PyGTK.
Мне нужно создать прозрачное фоновое окно, но при этом иметь возможность отображать изображения (на основе растровых изображений и масок) и другие объекты внутри окна.
Я использую следующий код, но в Ubuntu (Oneric Ocelot) не отображаются объекты изображений, и я получаю сообщение об ошибке, опубликованное ниже (хотя в противном случае отображается окно с объектами кнопок). Это даже не будет отображаться в Windows 7 (Эта ошибка также опубликована под).
def expose(widget, event):
cr = widget.window.cairo_create()
# Sets the operator to clear which deletes everything below where an object is drawn
cr.set_operator(cairo.OPERATOR_CLEAR)
# Makes the mask fill the entire window
cr.rectangle(0.0, 0.0, *widget.get_size())
# Deletes everything in the window (since the compositing operator is clear and mask fills the entire window
cr.fill()
# Set the compositing operator back to the default
cr.set_operator(cairo.OPERATOR_OVER)
hab_fish_win = gtk.Window()
hab_fish_win.resize(640, 480)
hab_fish_win.set_resizable(False)
hab_fish_win.set_decorated(False)
hab_fish_win.set_has_frame(False)
hab_fish_win.set_position(gtk.WIN_POS_CENTER)
hab_fish_win.set_app_paintable(True)
screen = hab_fish_win.get_screen()
rgba = screen.get_rgba_colormap()
hab_fish_win.set_colormap(rgba)
hab_fish_win.connect('expose-event', expose)
hab_fish_win.show()
ЗАПУСК WINDOWS 7:
Обратная трассировка (самый недавний призыв последнего): файл "C:UsersuserMousePaw GamesWord4WordPYMfishtest2.py", строка 337, in HAB_FISH () файл "C:UsersuserMousePaw GamesWord4WordPYMfishtest2.py", строка 100, in init hab_fish_win.set_colormap (rgba) TypeError: Gtk.Штучка.аргумент set_colormap() 1 должен быть gtk.ГДК.Цветов, не Нет
Быстрое "print rgba" подтверждает, что rgba - "нет", таким образом, ошибка.
UBUNTU" ONERIC OCELOT " RUN:
Gtk предупреждение: попытка нарисовать чертеж с глубиной 24 до чертежа с глубиной 32
Что происходит? Мне отчаянно нужен этот прозрачный фон для окна.