2011-03-05 66 views
1

我使用tint2作为面板,并且想要显示cpu temp作为系统托盘图标,因为没有任何插件可以做到这一点,我只想知道无论如何,无论如何要做到这一点。剧本我至今是:系统托盘中的Python cpu温度Linux

#! /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秒左右更新。任何帮助不胜感激。

+1

Conky的Conky的Conky的;) – Orbit 2011-03-05 18:54:25

回答

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() 

希望这会有所帮助,至于