Предполагая, что ваша программа работает под менеджером композиции, вы можете получить прозрачность для каждого виджета, манипулируя X-окном виджета. Посмотрите на gtk.gdk.Window.set_opacity () .
Обратите внимание, это не gtk.Window
; вы можете получить этот объект, получив его свойство window
(buttonWidget.window
), но только когда виджет реализован и только когда виджет обрабатывает события - например, gtk.Label не имеет своего собственного окна X.
Если вам нужно работать также, когда у вас нет диспетчера композиций, рисование ваших виджетов самостоятельно - это единственный вариант, но вам не обязательно использовать cairo; рисование пиксель за пикселем в голом окне X также будет работать.