Python 3.x GTK Python显示给定时间的消息

Python 3.x GTK Python显示给定时间的消息,python-3.x,gtk,pygtk,Python 3.x,Gtk,Pygtk,我正在为Python做一个简单的GUI程序。在一个函数中,我想显示一条文本消息几秒钟,然后继续。我的这部分代码是: self.message.set_text('This is a message') time.sleep(3) self.message_box.destroy() # call another function 我的问题是,程序首先休眠,然后显示消息,然后继续销毁消息小部件,而不是显示消息3秒钟。我被告知GTK是异步的,因此最好使用线程,然而,我认为对于这个简单的程序(显示几

我正在为Python做一个简单的GUI程序。在一个函数中,我想显示一条文本消息几秒钟,然后继续。我的这部分代码是:

self.message.set_text('This is a message')
time.sleep(3)
self.message_box.destroy()
# call another function
我的问题是,程序首先休眠,然后显示消息,然后继续销毁消息小部件,而不是显示消息3秒钟。我被告知GTK是异步的,因此最好使用线程,然而,我认为对于这个简单的程序(显示几个按钮和文本消息,取决于单击哪个按钮)来说,这将是一种过度杀伤力


有没有可能在没有线程的情况下显示给定时间的文本?

您不能使用
time.sleep()
,因为它会阻塞gtk主循环。但是你是对的,线程对于你的用例来说是一种过度的杀伤力。你可以用。此方法实际上是每X秒执行一次函数,直到返回
False
。如果返回
None
,也不会再次调用它。因此,这是一种更简单的方法:

from gi.repository import Gtk, GLib

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self)
        self.set_default_size(50, 20)
        label = Gtk.Label("test")
        self.add(label)
        GLib.timeout_add_seconds(3, label.destroy)


win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

谢谢这个功能很有魅力。我想我真的是偶然发现了它,但我没有意识到我可以像这样使用它。