当我在火车上班时,我将上网本连接到我的Nexus One的wifi热点。当我通过隧道时,我的手机显然会失去它的3G连接,并且在火车出现后需要一段时间重新建立。但上网本wifi标识保持不变,因为它仍然连接到手机本身。
我写了一个小python程序,试图ping服务器,从而决定互联网是否可用(随意建议一种检测互联网连接的方法,可以更快或者使用更少的带宽,因为我每月上限)。
我的问题是:如何在Python中为GNOME Panel 2.30.2创建一个小程序,以图形方式显示此状态,以便我可以决定何时继续单击链接并期望互联网正常工作。
我得到了这个example面板按钮,但是想要一个根据情况发生变化的图标。
我使用Python几年之前还没有编码gnome。我在10.04上使用ubuntu桌面版作为我的登录而不是统一。
答案 0 :(得分:9)
结帐this simple applet I made。它有一个图标,根据事件而变化。只需用您的逻辑替换逻辑,它应该可以解决问题。更好的是,它应该与所有与freedesktop兼容的环境兼容。
答案 1 :(得分:4)
供将来参考,关于如何为Gnome3构建指标的非常好的指南:http://candidtim.github.io/appindicator/2014/09/13/ubuntu-appindicator-step-by-step.html
完整的源代码:
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()