2011-03-05 73 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() 

希望這會有所幫助,至於