2014-05-09 8 views
5

के पास आइकन अक्षम करें मैं अजगर में ओपनवेदरमैप साइट एपिंडिकेटर लिखता हूं, लेकिन मुझे आइकन के बिना सूचक में केवल टेक्स्ट लेबल चाहिए। लेकिन जब मैं छोड़ देता हूं तो मुझे खाली आइकन दिखाएं। क्यों, मुझे केवल पाठ की आवश्यकता है। उबंटू में 12.04 पायथन-एपिंडिकेटर को आइकन की आवश्यकता नहीं है अगर "" खाली आइकन लोड न करें, लेकिन उबंटू 14.04 में खाली आइकन छोड़ दें। आइकन को अक्षम कैसे करें ?? कोई विचार?जीटीके 3, पायथन, एपिंडिकेटर, लेबल

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 
import urllib2 
import json 
import time 
import datetime 

from gi.repository import Gtk, Gdk, GLib, GObject 
from gi.repository import AppIndicator3 as appindicator 

class programa: 

    def __init__(self): 
    # Create Indicator with icon and label 
     # If leave empty "" then load empty icon 
     self.ind = appindicator.Indicator.new("Weather","",appindicator.IndicatorCategory.APPLICATION_STATUS) 
     self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) # 
     self.menu_structure() 

    # Menu structure 
    def menu_structure(self): 
     refresh  = 720 # Refresh interval in seconds 
     url   = urllib2.Request('http://api.openweathermap.org/data/2.5/weather?q=siauliai&units=metric') 
     openup  = urllib2.urlopen(url) # open url 
     json_string = openup.read() #read data 
     parsed_json = json.loads(json_string) 

     # Get data 
     temp   = parsed_json['main']['temp'] # Temperature in metric system 
     wind   = parsed_json['wind']['speed'] # Wind speed 
     humidity  = parsed_json['main']['humidity'] 
     clouds  = parsed_json['clouds']['all'] 
     weather  = parsed_json['weather'][0]['main'] 
     weather_desc = parsed_json['weather'][0]['description'] 
     update_time = parsed_json['dt'] 
     updated  = datetime.datetime.fromtimestamp(int(update_time)).strftime('%H:%M') 
     # GTK menu 
     self.menu   = Gtk.Menu() 
     self.menu_updated = Gtk.MenuItem("Updatet: "+updated) 
     self.menu_weather = Gtk.MenuItem("Weather: "+weather) 
     self.menu_desc  = Gtk.MenuItem("Desc: "+weather_desc) 
     self.menu_clouds = Gtk.MenuItem("Clouds: "+str(clouds)+"%") 
     self.menu_humidity = Gtk.MenuItem("Humidity: "+str(humidity)+"%") 
     self.menu_wind  = Gtk.MenuItem("Wind: "+str(wind)+" m/s") 
     self.separator  = Gtk.SeparatorMenuItem() 
     self.exit   = Gtk.MenuItem("Exit") 
     self.exit.connect("activate", self.quit)  

     #show menu 
     self.menu_updated.show() 
     self.menu_weather.show() 
     self.menu_desc.show() 
     self.menu_clouds.show() 
     self.menu_humidity.show() 
     self.menu_wind.show() 
     self.separator.show() 
     self.exit.show() 

     # Append menu 
     self.menu.append(self.menu_updated) 
     self.menu.append(self.menu_weather) 
     self.menu.append(self.menu_desc) 
     self.menu.append(self.menu_clouds) 
     self.menu.append(self.menu_humidity) 
     self.menu.append(self.menu_wind) 
     self.menu.append(self.separator) 
     self.menu.append(self.exit) 

     self.ind.set_menu(self.menu) 

     # Set label in celcius temperature 
     self.ind.set_label(str(temp)+u"\u2103".encode('utf-8'),"") 

     # close url 
     openup.close() 

     # Refresh indicator 
     GLib.timeout_add_seconds(refresh,self.menu_structure) 

    def quit(self, widget): 
     sys.exit(0) 

if __name__ == "__main__": 
    indicator = programa() 
    Gtk.main() 

उत्तर

3

एक ही रास्ता मैं पाया है या तो अपने स्वयं पतली अदृश्य चिह्न का उपयोग करने के लिए या /usr/share/unity/icons/panel-shadow.png या के रूप में जैसे PNG एक पतली और सूक्ष्म मौजूदा ubuntu उपयोग करने के लिए है आप दोनों में से कुछ को लागू कर सकते हैं:

icon_image = os.path.dirname(__file__) + "/my_thin_inv_icon.png" 
if not os.path.isfile(icon_image): 
    icon_image = "/usr/share/unity/icons/panel-shadow.png" 

self.ind = appindicator.Indicator.new("Weather",icon_image,appindicator.IndicatorCategory.APPLICATION_STATUS) 
+1

लेकिन अगर मैं 1 पिक्सेल पारदर्शी आइकन का उपयोग करता हूं, तो एपिंडिकेटर ने बड़ी जगह की, और दो निकट संकेतक निकट नहीं हैं। –

+1

मैंने शोध का एक गुच्छा किया है और यह मुझे मिला सबसे सरल समाधान है। AppIndicator लाइब्रेरी का उपयोग करके और कुछ प्रकार की मेनू लाइब्रेरी का उपयोग करके इसे करने का एक तरीका हो सकता है, लेकिन इसके लिए मेनू सिस्टम की पूरी रीराइट की आवश्यकता होगी। हालांकि इसके लिए मुझे यूआरएल नहीं मिल रहा है। – chimeraha

संबंधित मुद्दे