2011-03-05 2 views
1

J'utilise tint2 pour un panneau et je veux afficher la température du processeur en tant qu'icône de la barre d'état système car il n'y a pas de plugins pour tint2 qui le font et je voudrais juste savoir comment faire de toute façon s'il y en avait un ou non. Le script que j'ai à ce jour est:Python cpu temp dans la barre d'état système 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() 

Fondamentalement, il fonctionne la première fois mais je voudrais aussi que pour mettre à jour toutes les 5 secondes. Toute aide grandement appréciée.

+1

conky conky conky;) – Orbit

Répondre

-1

Regardez le module "threading" de Python. Créez une fonction qui exécute la commande et mettez à jour le texte de gtk.Label avec la nouvelle sortie (t.set_text (str)). Et exécutez cette fonction sur un fil.

http://docs.python.org/library/threading.html

3

vous pouvez définir une minuterie via timeout_add_seconds et mettre à jour votre icône de la barre dans le rappel. Voir si un exemple ci-dessous fonctionnerait pour vous:

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

espérons que cette aide, ce qui est

Questions connexes