【问题标题】:Detect scroll wheel signal in system tray using Python AppIndicator in Ubuntu 12.04在 Ubuntu 12.04 中使用 Python AppIndicator 检测系统托盘中的滚轮信号
【发布时间】:2013-04-28 04:03:38
【问题描述】:

我试图让这个 python 代码在鼠标悬停在托盘图标上并滚动鼠标滚轮时做出反应,我在网上找不到任何示例。这是我目前所拥有的,它对滚动滚轮没有反应......

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

如何检测滚轮的移动?

【问题讨论】:

  • 感谢您的测试,您是对的,它确实有效,我刚刚使用 gnome-panel 进行了测试,它工作正常。我之前在 Cairo/GLX 码头使用通知区域,一定是其中的一个错误。如果您想提交您的评论作为答案,我会将其标记为已接受的答案。

标签: python scroll appindicator


【解决方案1】:

这是连接鼠标滚动事件的正确方法,并且代码确实有效,在两个 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()

【讨论】:

  • 再次感谢!并感谢 pygobject 示例。我已经测试了您的示例,它在 gnome-panel 中再次运行良好,但 Cairo Dock 3.2.1 似乎没有注意到滚轮的移动。
  • 请注意,我正在使用 XUbuntu 并将 scroll(aai, ind, steps) 替换为 scroll(aai=None, ind=None, steps=None) 使其工作(有点)。
猜你喜欢
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多