#!/usr/bin/env python
import sys
import pygtk
pygtk.require('2.0')
import gobject
import gtk
import cairo
from gtk import gdk
size_x = 300
size_y = 75
position_x = 100
position_y = 200
win = None
def expose(widget, event):
ctx = widget.window.cairo_create()
ctx.set_source_rgba(0.0, 0.0, 0.0, 0.3)
ctx.set_operator(cairo.OPERATOR_SOURCE)
ctx.paint()
return False
def screen_changed(widget, old_screen = None):
screen = widget.get_screen()
colormap = screen.get_rgba_colormap()
if colormap == None:
print 'Your screen does not support alpha'
colormap = screen.get_rgb_colormap()
else:
print 'Your screen supports alpha'
widget.set_colormap(colormap)
return True
def clicked(widget, event):
gtk.main_quit()
def main(args):
global win
global size_x
global size_y
win = gtk.Window()
win.set_title("test")
win.set_app_paintable(True)
win.set_decorated(False)
win.resize(size_x, size_y)
win.move(position_x, position_y)
win.set_keep_above(True)
win.connect("delete-event", gtk.main_quit)
win.connect("expose-event", expose)
win.connect("screen-changed", screen_changed)
win.add_events(gdk.BUTTON_PRESS_MASK)
win.connect('button-press-event', clicked)
screen_changed(win)
win.show_all()
gtk.main()
return True
if __name__ == "__main__":
sys.exit(main(sys.argv))
На одной машине (Ubuntu 8.10) этот код, как и предполагалось, рисует полупрозрачное окно заданных размеров. На другой (тоже Ubuntu 8.10) — черное окно тех же размеров. На обоих машинах выдается сообщение 'Your screen supports alpha'. В чем может быть дело, куда копать?
Last edited Dec. 11, 2008, 7:54 a.m.