我正在尝试设置没有按钮事件的标签。
我希望我的应用程序在2秒后显示另一条消息。
当我运行程序时,窗口只显示最后一条消息:“再见”。
顺序好吗?我忘了什么吗?
由于
import gi
gi.require_version('Gtk','3.0')
from gi.repository import Gtk
from time import sleep
class form():
def __init__(self):
self.b = Gtk.Builder()
self.b.add_from_file("color.glade")
self.ventana_main = self.b.get_object("ventana_main")
self.label = ""
self.box = self.b.get_object("box_test") #obj creado en color.glade
self.box_area = Gtk.Box()
self.box.add(self.box_area)
self.b.connect_signals(self)
self.ventana_main.show_all()
def label_hi(self, widget):
self.label = Gtk.Label("Hola")
self.box_area.add(self.label)
self.box_area.show_all()
def label_bye(self, widget):
self.label.set_markup("Bye")
def on_ventana_main_destroy(self, widget, data=None):
Gtk.main_quit()
if __name__ == "__main__":
f = form()
f.label_hi(f.ventana_main)
sleep(2)
f.label_bye(f.ventana_main)
Gtk.main()
答案 0 :(得分:1)
在致电Gtk.main()
之前,您无法进行更改,因为此时您的应用程序甚至无法显示。
如果您希望延迟2秒,请使用GLib.timeout_add_seconds,并将要修改的对象(您的标签)作为data
参数传递。您需要传递的function
参数是在2秒后调用的回调。在该回调中,您只需在已作为label_bye
参数传递的标签上致电set_label
(或您的data
),即可完成。
另一件事是你应该创建标签并将其添加到构造函数中的小部件树中,而不是label_hi
方法中。 label_hi
和label_bye
只需拨打set_label
即可更改显示的消息。