2011-05-23 8 views
14

電車に乗っているときにネットブックをNexus OneのWi-Fiホットスポットに接続します。私がトンネルを通過するとき、私の電話は明らかに3G接続を失い、電車が出てから再確立するまでに時間がかかります。しかし、ネットブックのwifiロゴは、電話機自体にまだ接続されているので、一定のままです。Pythonでの単純なGnomeパネルアプレット

私は、サーバーにpingを試み、インターネットが利用可能かどうかを判断する小さなpythonプログラムを作成しました。インターネット接続を検出する方法を提案してください。月)。

私の質問は:GNOMEパネル2.30.2用のアプレットをPythonで作成し、この状態をグラフィカルに表示するにはどうすればいいですか。リンクをクリックしてインターネットが動作することを期待します。

パネルボタンを使用してこのexampleを取得しましたが、状況によってアイコンが変わります。

私は数年前からgnomeをコード化していませんでした。私は10.04では、ユニバーサルではなくログインとしてubuntuデスクトップ版を使用しています。

+0

私はIバスはそれをしない方法を見てみたいです。 –

答えて

9

this simple applet I madeを確認してください。イベントに応じてアイコンが変わります。ロジックをロジックに置き換えるだけで、そのトリックを行う必要があります。さらに、すべてのフリーデスクトップ環境と互換性があるはずです。今後の参考のために

+2

素晴らしい例です、ありがとうございます。タスクに必要なだけ複雑になり、それ以上は必要ありません。 –

+2

私のニーズを満たす[net-panel](https://github.com/tomviner/net-panel)というgithubプロジェクトを作成しました。 –

+0

うーん、Ubuntu 12.04では起動時に何もしません。私はコマンドラインで新しいプロンプトが表示されるのを待っています。アイコンやアプレットなどは表示されません。それを稼働させるために何を更新するかに関する情報がありますか? – Alfe

3

、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() 
関連する問題