pygtk +:如何在第一个图像后3秒显示第二个图像?

时间:2018-01-15 09:38:01

标签: python-3.x gtk3

我正在编写一个pygtk +程序,允许用户通过使用工具栏中的按钮来浏览书籍。 在打开程序时,我希望在GUI完成时显示“标题”或“封面”图像几秒钟。然后将显示背景图像。 此脚本仅在延迟3秒后显示第二个图像。

import gi, time
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class FirstScrn(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self)

        image = Gtk.Image.new_from_file("../images/first.png")
        self.add(image)
        self.show_all()
        time.sleep(3)
        self.remove(image)
        image = Gtk.Image.new_from_file("../images/second.png")
        self.add(image)
        self.show_all()

first = FirstScrn()
first.connect("delete-event", Gtk.main_quit)

Gtk.main()

我怎样才能达到预期的效果?

1 个答案:

答案 0 :(得分:1)

这可能是一个可能的解决方案:

import gi, time
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk, GLib

class FirstScrn(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self)

        image = Gtk.Image.new_from_file("../images/first.png")
        self.add(image)
        self.show_all()
        GLib.timeout_add_seconds(3, self.show_next_image, image)

    def show_next_image (self, previous_image):
        self.remove(previous_image)
        image = Gtk.Image.new_from_file("../images/second.png")
        self.add(image)
        self.show_all()

first = FirstScrn()
first.connect("delete-event", Gtk.main_quit)

Gtk.main()

请记住,time.sleep会让Gtk无法响应。并且线程也不起作用。这就是您使用timeout_addidle_add等内容的原因。