0

マウスをトレイ アイコンの上に置いてマウス ホイールをスクロールすると、この 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()

スクロール ホイールの動きを検出するにはどうすればよいですか?

4

1 に答える 1

3

これはマウス スクロール イベントに接続する正しい方法であり、2 つの 12.04 システムでテストされたコードは機能します。ただし、そのうちの 1 つでの最初の数回のテスト実行も機能しなかったため、バグがある可能性がありますが、その後は問題ありませんでした。

ゼロから始める場合は、開発されていない pygtk (Gtk2) の代わりに pygobject (Gtk3) を使用することをお勧めします。テストの一環として、スクリプトを 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()
于 2013-05-03T15:22:42.537 に答える