我知道程序应该在你调用时进入一个无限循环gtk.main公司. 环路gtk.main公司什么时候会破裂自我退出被称为。在
但我需要另一个活动的循环,它将检查日志文件中的更改,并不断更新这些更改文本缓冲区,将显示在gtk文本框. 所以我可以在下面的代码中添加这个循环。在
class MessageBox:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("mbx.glade")
self.window = builder.get_object("window")
dic = { "on_buttonSend_clicked" : self.sendmsg,
"on_entry_activate" : self.sendmsg,
"on_buttonWhois_clicked" : self.sendwhois,
"on_buttonIdleTime_clicked" : self.sendidletime,
"on_window_destroy" : self.exitfunc}
builder.connect_signals(dic)
self.entry = builder.get_object("entry")
self.display = builder.get_object("display")
self.displaybuff=self.display.get_buffer()
def exitfunc(self, widget):
def sendmsg(self, widget):
def sendwhois (self, widget):
def sendidletime (self, widget):
if __name__ == "__main__":
msgbox = MessageBox()
msgbox.window.show()
gtk.main()
在
gtk
中同时只存在一个主循环,即gtk.main
进入一个新的级别,gtk.main_quit
从该级别存在。在通常,您需要做的是一个createworker线程,它保持并行工作,并在获得新信息时更新小部件。但是,根据您描述的问题,我认为您只需要使用
gio
监视文件的更改,如下所示:每当文件更改时,将发出一个信号并执行
file_changed_cb
回调方法。在那里,您可以更新小部件以匹配所监视文件中的新信息。但是,请注意,如果您的回调方法花费太长时间来完成,那么您的应用程序可能看起来没有响应,那么您必须使用线程策略。在相关问题 更多 >
编程相关推荐