pygtk+:如何在第一张图像 3 秒后显示第二张图像?
pygtk+: How to display a second image 3 seconds after the first?
我正在编写一个 pygtk+ 程序,允许用户使用工具栏中的按钮浏览一本书。
打开程序时,我想在 GUI 完成时显示 "title" 或 "cover page" 图像几秒钟。然后将显示背景图像。
此脚本延迟3s后只显示第二张图片
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()
怎样才能达到预期的效果?
这可能是一个可能的解决方案:
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_add and idle_add.
这样的东西
我正在编写一个 pygtk+ 程序,允许用户使用工具栏中的按钮浏览一本书。 打开程序时,我想在 GUI 完成时显示 "title" 或 "cover page" 图像几秒钟。然后将显示背景图像。 此脚本延迟3s后只显示第二张图片
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()
怎样才能达到预期的效果?
这可能是一个可能的解决方案:
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_add and idle_add.
这样的东西