Python 3.x GTK Python显示给定时间的消息
我正在为Python做一个简单的GUI程序。在一个函数中,我想显示一条文本消息几秒钟,然后继续。我的这部分代码是: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是异步的,因此最好使用线程,然而,我认为对于这个简单的程序(显示几
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()
谢谢这个功能很有魅力。我想我真的是偶然发现了它,但我没有意识到我可以像这样使用它。