Linux 系统托盘中显示 Python CPU 温度
我正在使用tint2这个工具来创建一个面板,想把CPU温度显示为系统托盘图标。因为tint2没有现成的插件可以做到这一点,所以我想知道怎么自己实现这个功能。到目前为止,我写的脚本是:
#! /usr/bin/python
import pygtk,os
pygtk.require("2.0")
import gtk
import egg.trayicon
t = egg.trayicon.TrayIcon("CPUTemp")
cpu_temp=os.popen('sensors | grep "temp1:" | cut -d+ -f2 | cut -c1-2').read()
t.add(gtk.Label(cpu_temp))
t.show_all()
gtk.main()
基本上,这个脚本第一次运行的时候是有效的,但我还希望它能每5秒更新一次。非常感谢任何帮助。
2 个回答
-1
看看Python的“threading”模块。创建一个函数,这个函数的作用是用新的输出更新gtk.Label的文本(用t.set_text(str)来实现)。然后在一个线程上运行这个函数。
3
你可以通过 timeout_add_seconds 来设置一个定时器,然后在回调函数中更新你的托盘图标。下面的例子看看能不能帮到你:
import gtk, gobject, os
class CPUTimer:
def __init__(self, timeout):
self.window = gtk.Window()
vbox = gtk.VBox()
self.window.add(vbox)
self.label = gtk.Label('CPU')
self.label.set_size_request(200, 40)
vbox.pack_start(self.label)
# register a timer
gobject.timeout_add_seconds(timeout, self.timer_callback)
self.window.connect("destroy", lambda w: gtk.main_quit())
self.window.connect("delete_event", lambda w, e: gtk.main_quit())
self.window.show_all()
self.timer_callback()
def timer_callback(self):
cpu_temp = os.popen('sensors | grep "temp1:" | cut -d+ -f2 | cut -c1-2').read()
print 'update CPU: ' + cpu_temp
self.label.set_text('CPU: ' + cpu_temp)
return True
if __name__ == '__main__':
timer = CPUTimer(1) # sets 1 second update interval
gtk.main()
希望这对你有帮助,祝好