Как узнать, какой из пунктов меню я щелкнул в appindicator?
Я создал программу, в которой я создал несколько пунктов меню и сохранил их в 'ci' в последнюю очередь. Всякий раз, когда я нажимаю на один из пунктов меню, он выполняет функцию 'checkStatus'. Я хочу знать, какой из пунктов меню я щелкнул ( ci[0] или ci[1] или что-то еще), потому что моя функция будет работать согласно пункт, который я нажал.
#!/usr/bin/python
import requests
from bs4 import BeautifulSoup
import appindicator
import pynotify
import gtk
appindicator.CATEGORY_APPLICATION_STATUS)
a = appindicator.Indicator('tubecheck', 'indicator-messages', appindicator.CATEGORY_APPLICATION_STATUS)
a.set_label('Live cricket score')
a.set_status( appindicator.STATUS_ACTIVE )
m = gtk.Menu()
ci = []
url = 'http://static.cricinfo.com/rss/livescores.xml'
sc = requests.get(url)
soup = BeautifulSoup(sc.text,'lxml')
data = soup.select('item')
for i in range(len(data)):
ci.append(gtk.MenuItem(str(i+1)+'. '+data[i].find('title').text))
m.append(ci[i])
qi = gtk.MenuItem( str(i+2)+'. '+'Quit' )
m.append(qi)
a.set_menu(m)
for i in range(len(ci)):
ci[i].show()
qi.show()
def checkStatus(item):
pynotify.init('test')
n = pynotify.Notification('Live Cricket score',data[i].text)
n.show()
ci[i].connect('activate', checkStatus)
def quit(item):
gtk.main_quit()
qi.connect('activate', quit)
gtk.main()
1 ответ
Во-первых, когда вы создаете каждый MenuItem
Вы можете назвать этот элемент:
menuItem = Gtk.MenuItem( "Visible name" )
menuItem.props.name = "internal unique name"
Тогда в checkStatus
функция, которую вы можете обратиться к имени, используя
item.props.name
и предполагая, что вы дали уникальное имя каждому предмету, это должно сделать это.