изображение pygtk исчезает

1

У меня есть image1.png и image2.png

когда мое приложение запускает изображение1.png показано, после запуска приложения мне нужно скрыть image1.png и show image2.png с использованием fadein изображения2.png над image1.png

как я могу это сделать? Я использую python и pygtk, также могу импортировать модули PIL, если необходимо

Теги:
image
python-imaging-library
pygtk
fadein

2 ответа

4
Лучший ответ

Здесь быстрое и грязное приложение pygtk, которое я только что сделал для эффекта угасания. Он был адаптирован из этого C-кода:

import gtk
import gobject
import cairo
import sys

class PyApp(gtk.Window):

    def __init__(self):
        super(PyApp, self).__init__()

        self.set_title("Fade In")
        self.resize(300, 350)
        self.set_position(gtk.WIN_POS_CENTER)

        ## alpha is starting transparency
        self.alpha = 0
        ## delta is amount to increase alpha
        self.delta = 0.01

        self.connect("destroy", gtk.main_quit)

        self.darea = gtk.DrawingArea()
        self.darea.connect("expose-event", self.expose)
        self.add(self.darea)

        try:
            self.surface = cairo.ImageSurface.create_from_png("/usr/share/icons/gnome/256x256/emotes/face-angel.png")
        except Exception, e:
            print e.message
            sys.exit(1)

        self.show_all()

    def fadeImage(self):
        self.darea.queue_draw()

    def expose(self, widget, event):

        cr = widget.window.cairo_create()

        cr.set_source_surface(self.surface, 10, 10)
        cr.paint_with_alpha(self.alpha)

        self.alpha += self.delta

        if self.alpha >= 1: return False
        else: gobject.timeout_add(50,self.fadeImage)

PyApp()
gtk.main()
  • 0
    Спасибо! Я использовал это для приложения GTK + 3 Python. Единственное, что мне нужно было адаптировать, - это использовать «draw» вместо «expose» (не нужно использовать cairo_create (), так как контекст уже передан в обратном вызове), и «gobject.timeout_add ()» становится 'GLib.timeout_add ()'
1

Похоже, что GTK - не лучший инструмент для работы. Я бы предложил использовать Clutter.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню