GTK Python 在给定时间内显示消息



我正在为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 主循环。但是你是对的,线程对于你的用例来说是一种矫枉过正。您可以使用glib.timeout_add_seconds() .此方法实际上旨在每 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()

最新更新