首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PYGTK到PYGI: gtk.timeout_add等价

PYGTK到PYGI: gtk.timeout_add等价
EN

Ask Ubuntu用户
提问于 2012-12-14 01:08:21
回答 2查看 3K关注 0票数 9

我已经转换了一些Python代码来使用PYGI,但是我不知道如何转换这一行:

代码语言:javascript
复制
gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

显然,由于我并不真正了解PYGTK和PYGI之间的区别,所以我的新代码使用

代码语言:javascript
复制
from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

如图所示,https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python_版本

我要转换的完整代码在这里,http://pastebin.com/raw.php?i=aUtASRpy

什么是相当于

代码语言:javascript
复制
gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

在PYGI?

我还假设PYGI是制造统一指标的最现代方式。

我还假设,最好让指示器检查某物的状态,而不是告诉指示符的状态(推和拉)。让python程序每秒钟检查一次可以吗?

谢谢!

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2012-12-14 02:28:49

最好每个人问一个问题。呃..。有个问题。

Python的标准库有threading模块,它有一个Timer类,完全可以满足您的需要。文档

关于推和拉--当你的应用程序在某件事发生时收到通知(推送),而不是每一秒检查某件事情是否发生(拉)--“我们到了吗?我们到了吗?我们还在吗?”--因为它允许你的应用程序只睡觉,在收到通知之前什么也不做,而不是每秒钟重复检查一次。然而,问题是,对于某些类型的活动,获得通知可能比较棘手,因此这取决于应用程序的性质。做太多的检查也是不好的电池寿命和其他东西。

票数 1
EN

Ask Ubuntu用户

发布于 2012-12-14 08:04:09

为了确保Gtk方式也存在于一个答案中:

相当于

代码语言:javascript
复制
gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

在gobject反思(PyGI)中是:

代码语言:javascript
复制
from gi.repository import GLib
GLib.timeout_add(PING_FREQUENCY * 1000, self.doWork)

但是,在每隔x秒定期检查某项内容时,应使用

代码语言:javascript
复制
GLib.timeout_add_seconds(PING_FREQUENCY, self.doWork)

这样就可以方便地对定时器进行分组,从而节省电力,这对于移动设备来说非常重要。来自文档

同时对定时器进行分组会带来更强的功率和更高的CPU效率,因此,如果您的计时器是秒的倍数,而且从现在开始不需要第一个定时器,那么使用glib.timeout_add_seconds()比使用glib.timeout_add()更好。

票数 19
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/228849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档