【发布时间】:2014-07-19 01:07:46
【问题描述】:
我必须每 1 秒/0.1 秒/0.5 秒等更新 3 个 Gtk.Label 和几个 Gtk.DrawingArea,但我不知道为什么软件大约 10 秒后冻结。
我尝试了 gtk.gdk.threads_enter/leave 或使用 lock,但无论如何 更新不会同时发生,而是它是顺序的。(因此没有任何 Gtk.Widget 与多个回调共享)
我们看一下代码:
#updating Gtk.DrawingArea
for ip in self.__cpu_info.keys():
self.__cpu_info[ip]['drawing_area'].show()
self.__cpu_info[ip]['drawing_area'].queue_draw()
#updating Gtk.Label
self.__Media_aritmetica_Label.set_text('%.2f' % self.__cpu_medie['media_aritmetica'])
self.__Media_mobile_Label.set_text('%.2f' % self.__cpu_medie['media_mobile'])
self.__Mediana_Label.set_text('%.2f' % self.__cpu_medie['mediana'])
注意::软件仅使用上述 2 个部分中的一个冻结(因此两者都冻结所需的时间更少)
【问题讨论】:
-
请显示一些真实代码,上面的代码太短了。
-
好的,让我们开始绘制和更新几个 Gtk.DrawingArea。请在以下位置运行文件:dropbox.com/sh/ly18mj6tg4e22jc/AACEuvzO4IneAtYG_-v-k-Wua/…
-
将您的代码内嵌到您的问题中(代码标签是您的朋友)。
-
由于缺少导入,我还遇到了许多其他错误。先把这个烂摊子修好。此外,用意大利语命名变量和用意大利语评论根本没有帮助。
-
包含的 2 个 cmets 只是没用(因为这个例子很容易理解)。说到错误,我刚遇到很多 Pango-CRITICAL 错误 和 Gtk-CRITICAL 错误;这是由于几个Gtk.Label的更新,会导致软件的终止