Linux系统托盘中的Python cpu温度

2024-05-15 18:02:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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秒更新一次左右。非常感谢任何帮助。在


Tags: import插件面板gtkoseggcpu温度
2条回答

您可以通过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()

希望这对你有帮助,谢谢

看看Python的“线程”模块。创建一个运行命令更新的函数gtk.标签具有新输出的文本(t.set_text(str))。在线程上运行这个函数。在

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

相关问题 更多 >