2011-05-23 18 views
14

Çalışmak için trendeyken, netbook'umu Nexus One'ın wifi etkin noktasına bağlarım. Bir tünelden geçerken telefonumun 3G bağlantısını yitirdiğini ve trenin ortaya çıkmasıyla yeniden kurulmasını biraz zaman alıyor. Ancak netbook wifi logosu, telefonun kendisine bağlı olduğu için sabit kalır.Python'da Basit Gnome Panel Uygulaması

Bir sunucuya ping yapmayı deneyen ve böylece internetin mevcut olup olmadığına karar veren küçük bir python programı yazdım (Internet bağlantısının daha hızlı olacağını ya da daha az bant genişliği kullanabileceğimi önermekten çekinmeyin) ay).

Sorum şu ki: Bu durumu grafiksel olarak görüntülemek için, Python'da GNOME Paneli 2.30.2 için nasıl bir uygulama oluşturabilirim, böylece bağlantıları tıklamaya ve internete çalışmayı beklemeye ne zaman karar vereceğime karar verebilirim.

Bu example'u çalışmak için bir panel düğmesiyle aldım ancak duruma bağlı olarak değişen bir simge istiyor.

Birkaç yıldır Python kullanmıştım ama daha önce gnome kodluyorlar. 10.04'te ubuntu masaüstü sürümünü bir bütünlük yerine giriş olarak kullanıyorum.

+0

Ben IBUS bunu nasıl bakardık. –

cevap

9

this simple applet I made. Olaylara bağlı olarak değişen bir simge var. Mantığı mantığınızla değiştirmeniz yeterlidir. Daha da iyisi, tüm freedektop uyumlu ortamlarla uyumlu olmalıdır. İleride

+2

Harika bir örnek, teşekkür ederim. Sadece görev için gereken kadar karmaşık ve daha fazla değil. –

+2

Şimdi, ihtiyaçları karşılayan [net panel] (https://github.com/tomviner/net-panel) adlı bir github projesi oluşturdum. –

+0

Hmm, Ubuntu 12.04'te başlatıldığında hiçbir şey yapmıyor. Komut satırında yeni bir komut istemi, simge veya uygulama ya da herhangi bir şey görüntülenmesini bekliyorum. Çalıştırmak için neyin değiştirilmesi gerektiğine dair herhangi bir güncelleme veya bilgi var mı? – Alfe

3

, Gnome3 için göstergeler oluşturmak için nasıl gerçekten güzel rehber: http://candidtim.github.io/appindicator/2014/09/13/ubuntu-appindicator-step-by-step.html

Komple kaynak kodu:

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