pygtk 图像淡入淡出

发布于 2024-11-04 03:49:03 字数 194 浏览 1 评论 0原文

我有 image1.png 和 image2.png

当我的应用程序启动时显示 image1.png,应用程序运行后我需要隐藏 image1.png 并使用 image2.png 的淡入淡出显示 image2.png image1.png

我该怎么做?我正在使用 python 和 pygtk 我也可以导入 PIL 模块,如果 是必要的

I have image1.png and image2.png

when my app starts the image1.png is showed, after the app runs I need hide
the image1.png and show image2.png using a fadein of image2.png over the
image1.png

how can I do that? I'm using python and pygtk also I can import PIL modules if
is necesary

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

喵星人汪星人 2024-11-11 03:49:03

这是我刚刚为淡入效果所做的一个快速而肮脏的 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()

Here's a quick and dirty pygtk app I just did for the fade-in effect. It was adapted from this C code:

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()
╰つ倒转 2024-11-11 03:49:03

听起来 GTK 并不是完成这项工作的最佳工具。我建议使用Clutter

Sounds like GTK is not the best tool for the job. I would suggest using Clutter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文