2011-05-23 10 views
14

जब मैं काम करने के लिए ट्रेन पर हूं, तो मैं अपनी नेटबुक को अपने नेक्सस वन के वाईफाई हॉटस्पॉट से जोड़ता हूं। जैसे ही मैं एक सुरंग से गुजरता हूं, मेरा फोन स्पष्ट रूप से 3 जी कनेक्शन खो देता है और ट्रेन उभरने के बाद फिर से स्थापित करने में कुछ समय लगता है। लेकिन नेटबुक वाईफाई लोगो स्थिर रहता है क्योंकि यह अभी भी फोन से जुड़ा हुआ है।पायथन में सरल जीनोम पैनल एप्लेट

मैंने एक छोटा पाइथन प्रोग्राम लिखा है जो सर्वर को पिंग करने का प्रयास करता है और इस प्रकार यह तय करता है कि इंटरनेट उपलब्ध है या नहीं (इंटरनेट कनेक्शन का पता लगाने की एक विधि का सुझाव देने के लिए स्वतंत्र महसूस करें जो या तो जल्दी होगा या कम बैंडविड्थ का उपयोग करेगा क्योंकि मैं प्रति कैप्ड हूं महीना)।

मेरा सवाल है: मैं इस स्थिति को ग्राफिक रूप से प्रदर्शित करने के लिए पाइथन में गनोम पैनल 2.30.2 के लिए एक एप्लेट कैसे बना सकता हूं, इसलिए मैं तय कर सकता हूं कि लिंक पर क्लिक करना जारी रखने और इंटरनेट पर काम करने की अपेक्षा कब जारी है।

मुझे यह example मिल गया है जो काम करने के लिए पैनल बटन के साथ है लेकिन स्थिति के आधार पर एक आइकन पसंद है।

मैंने कुछ वर्षों तक पायथन का उपयोग किया है लेकिन पहले gnome कोडित नहीं किया है। मैं 10.04 को, एकता की बजाय मेरे लॉगिन के रूप में उबंटू डेस्कटॉप संस्करण का उपयोग कर रहा हूं।

+0

मैं कैसे ibus यह करता है पर देखने चाहते हैं। –

उत्तर

9

this simple applet I made देखें। इसमें एक आइकन है जो घटनाओं के आधार पर बदलता है। बस अपने तर्क के साथ तर्क को प्रतिस्थापित करें और इसे चाल करना चाहिए। इससे भी बेहतर, यह सभी freedesktop- संगत वातावरण के साथ संगत होना चाहिए।

+2

महान उदाहरण, धन्यवाद। कार्य के लिए आवश्यक जितना जटिल, और नहीं। –

+2

मैंने अब एक गीथब प्रोजेक्ट बनाया है, जिसे [नेट-पैनल] (https://github.com/tomviner/net-panel) कहा जाता है जो मेरी आवश्यकताओं को पूरा करता है। –

+0

हम्म, उबंटू 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() 
संबंधित मुद्दे