Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的简单Gnome面板小程序_Python_Panel_Gnome - Fatal编程技术网

Python中的简单Gnome面板小程序

Python中的简单Gnome面板小程序,python,panel,gnome,Python,Panel,Gnome,当我在火车上上班时,我会将上网本连接到NexusOne的wifi热点。当我通过隧道时,我的手机显然失去了3G连接,一旦火车出现,需要一段时间才能重新建立。但上网本的wifi标志保持不变,因为它仍然连接到手机本身 我编写了一个小python程序,它试图ping一个服务器,从而决定互联网是否可用(请随意建议一种检测互联网连接的方法,该方法要么更快,要么使用更少的带宽,因为我每个月都有上限) 我的问题是:如何在Python中为GNOME Panel 2.30.2创建一个小程序,以图形方式显示此状态,以

当我在火车上上班时,我会将上网本连接到NexusOne的wifi热点。当我通过隧道时,我的手机显然失去了3G连接,一旦火车出现,需要一段时间才能重新建立。但上网本的wifi标志保持不变,因为它仍然连接到手机本身

我编写了一个小python程序,它试图ping一个服务器,从而决定互联网是否可用(请随意建议一种检测互联网连接的方法,该方法要么更快,要么使用更少的带宽,因为我每个月都有上限)

我的问题是:如何在Python中为GNOME Panel 2.30.2创建一个小程序,以图形方式显示此状态,以便决定何时继续单击链接并期望internet正常工作

我得到了一个面板按钮的工作,但想一个图标,根据情况的变化


我已经使用Python好几年了,但以前没有编写过gnome。我在10.04使用ubuntu桌面版而不是unity作为我的登录名。

签出。它有一个图标,根据事件的不同而变化。简单地用你的逻辑替换逻辑,它就会起作用。更好的是,它应该与所有与freedesktop兼容的环境兼容。

作为将来的参考,这是一个关于如何为Gnome3构建指标的非常好的指南:

完整的源代码:

import signal
import json

from urllib2 import Request, urlopen, URLError

from gi.repository import Gtk as gtk
from gi.repository import AppIndicator3 as appindicator
from gi.repository import Notify as notify


APPINDICATOR_ID = 'myappindicator'

def main():
    indicator = appindicator.Indicator.new(APPINDICATOR_ID, 'sample_icon.svg', appindicator.IndicatorCategory.SYSTEM_SERVICES)
    indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
    indicator.set_menu(build_menu())
    notify.init(APPINDICATOR_ID)
    gtk.main()

def build_menu():
    menu = gtk.Menu()
    item_joke = gtk.MenuItem('Joke')
    item_joke.connect('activate', joke)
    menu.append(item_joke)
    item_quit = gtk.MenuItem('Quit')
    item_quit.connect('activate', quit)
    menu.append(item_quit)
    menu.show_all()
    return menu

def fetch_joke():
    request = Request('http://api.icndb.com/jokes/random?limitTo=[nerdy]')
    response = urlopen(request)
    joke = json.loads(response.read())['value']['joke']
    return joke

def joke(_):
    notify.Notification.new("<b>Joke</b>", fetch_joke(), None).show()

def quit(_):
    notify.uninit()
    gtk.main_quit()

if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    main()
导入信号
导入json
来自urllib2导入请求、urlopen、URLError
从gi.repository将Gtk作为Gtk导入
从gi.repository导入AppIndicator3作为appindicator
从gi.repository导入Notify作为Notify
APPINDICATOR_ID='myappindicator'
def main():
indicator=appindicator.indicator.new(appindicator\u ID,'sample\u icon.svg',appindicator.IndicatorCategory.SYSTEM\u SERVICES)
指示器。设置_状态(应用指示器。指示器状态。激活)
指示器。设置菜单(构建菜单())
notify.init(APPINDICATOR\u ID)
gtk.main()
def build_菜单():
menu=gtk.menu()
item_笑话=gtk.MenuItem(“笑话”)
项目\笑话。连接('激活',笑话)
菜单.附加(项目_)
item_quit=gtk.MenuItem('quit')
项目退出。连接('激活',退出)
菜单.附加(项目\退出)
菜单。全部显示()
返回菜单
def fetch_笑话():
请求=请求('http://api.icndb.com/jokes/random?limitTo=[书呆子]”)
响应=urlopen(请求)
joke=json.load(response.read())['value']['joke']
回话
def笑话(uu):
notify.Notification.new(“笑话”,fetch_Joke(),None).show()
def退出(u3;):
notify.uninit()
gtk.main_quit()
如果名称=“\uuuuu main\uuuuuuuu”:
signal.signal(signal.SIGINT,signal.SIG_-DFL)
main()

我来看看IBus是如何做到这一点的。非常好的例子,谢谢。只需要任务所需的复杂度就可以了。我现在创建了一个名为“满足我的需要”的github项目。嗯,在Ubuntu 12.04上,它启动时什么都不做。我只是在命令行上等待一个新的提示,没有图标或小程序或任何出现的东西。是否有任何更新或信息需要更改以使其运行?我认为指导原则是粘贴代码,因为链接有时可能会失效。请将代码粘贴到您的答案中,因为链接确实已失效。@static\u rtti我大约两年前使用过您的代码。试图在我的磁盘上找到它,但没有用。悲哀,看起来不错!很高兴我找到了这个!非常感谢。