2013-04-28 164 views
0

检测使用Python AppIndicator在系统托盘滚轮信号,我试图让这个Python代码当鼠标悬停在任务栏图标和滚动鼠标滚轮反应,我找不到任何在线的例子。这是我迄今为止,它不反应滚动轮...在Ubuntu 12.04

#!/usr/bin/python 

APPNAME = "My App" 
ICON = "/usr/share/pixmaps/firefox.png" 

import appindicator as AI 
import gtk 


def sayhello(item): 
    print "menu item selected" 


def scroll(aai, ind, steps): 
    print "hello" # doesn't print anything 


def makemenu(): 
    ' Set up the menu ' 
    menu = gtk.Menu() 
    check = gtk.MenuItem('Check') 
    exit = gtk.MenuItem('Quit') 
    check.connect('activate', sayhello) 
    exit.connect('activate', gtk.main_quit) 
    menu.append(check) 
    menu.append(exit) 
    return menu 


def startapp(): 
    ai = AI.Indicator(APPNAME, ICON, AI.CATEGORY_APPLICATION_STATUS) 
    ai.set_status(AI.STATUS_ACTIVE) 
    ai.connect("scroll-event", scroll) 
    ai.set_menu(makemenu()) 
    gtk.main() 

startapp() 

如何检测滚轮的运动?

+0

谢谢测试,你是正确的,它的工作,我刚才跟GNOME面板测试,它工作正常。我以前在开罗/ GLX码头使用通知区,必须是一个错误。如果您想提交您的评论作为答案,我会将其标记为已接受的答案。 – 2013-05-03 02:34:48

回答

3

这是连接到鼠标的滚动事件的正确方法和代码没有工作,两个系统12.04测试。可能有一个错误,但是其中一个的前几个测试运行也不起作用,但后来很好。

如果你是从头开始,我会建议使用pygobject(Gtk3),而不是pygtk的(Gtk2的视觉),因为它不再开发开始。作为测试的一部分,我没有转换你的脚本pygobject和固定的显示菜单:

#!/usr/bin/env python 

APPNAME = "My App" 
ICON = "/usr/share/pixmaps/firefox.png" 

from gi.repository import AppIndicator3 as AI 
from gi.repository import Gtk 

def sayhello(item): 
    print "menu item selected" 

def scroll(aai, ind, steps): 
    print "hello" # doesn't print anything 

def makemenu(): 
    ' Set up the menu ' 
    menu = Gtk.Menu() 
    check_item = Gtk.MenuItem('Check') 
    exit_item = Gtk.MenuItem('Quit') 
    check_item.connect('activate', sayhello) 
    check_item.show() 
    exit_item.connect('activate', Gtk.main_quit) 
    exit_item.show() 
    menu.append(check_item) 
    menu.append(exit_item) 
    menu.show() 
    return menu 

def startapp(): 
    ai = AI.Indicator.new(APPNAME, ICON, AI.IndicatorCategory.HARDWARE) 
    ai.set_status(AI.IndicatorStatus.ACTIVE) 
    ai.set_menu(makemenu()) 
    ai.connect("scroll-event", scroll) 
    Gtk.main() 

startapp() 
+0

再次感谢!并感谢pygobject的例子。我已经测试过你的例子,并且它在gnome-panel中可以正常工作,但开罗Dock 3.2.1似乎无视滚轮运动。 – 2013-05-03 17:04:03

+0

刚一说明,我使用的是Xubuntu,并滚动(AAI =无,IND =无,步骤=无)使得它的工作(那种)更换滚动(AAI,IND,步骤)。 – daboross 2013-10-06 08:30:44