Gtk 3,python,appindicator,禁用标签附近的图标

时间:2014-05-09 15:43:59

标签: python gtk glib gobject appindicator

我在python中写了openweathermap网站appindicator,但我只需要指针中没有图标的文字标签。但是当我离开“”然后给我看空图标。为什么,我只需要文字。在Ubuntu 12.04中,python-appindicator不需要图标如果离开“”然后不加载空图标,但在ubuntu 14.04中留下空图标。 如何禁用图标?? 任何想法?

#!/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()

1 个答案:

答案 0 :(得分:3)

我发现的唯一方法是使用您自己的瘦弱隐形图标或使用精简的现有ubuntu png,例如/usr/share/unity/icons/panel-shadow.png,或者您可以实现两者都很少:

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)