2010-04-26 21 views
1

我已經使用菜單項在PyGtk +中編寫了一個Gnome窗口切換器小程序來表示在桌面上運行的不同應用程序。我想要做的一件事是當我將鼠標懸停在菜單欄上時,激活光標下的菜單項。我可以連接到菜單欄上的'enter-notify-event',但是我不知道在什麼時候觸發它。在懸停時觸發一個Gtk +菜單欄

這就是我的問題,當我將鼠標懸停在其父項上時,如何打開菜單欄的子菜單?

回答

1

這應該做的伎倆:

event = gtk.gdk.Event(gtk.gdk.BUTTON_RELEASE) 
event.window = enter_event.window 
event.x = enter_event.x 
event.y = enter_event.y 
event.button = 1 
menu.emit('button_release_event', event) 

這將創建一個新的事件對象,將其設置使用enter_evententer-notify-event,然後發射它在你的menu

你可以閱讀更多有關事件的位置:
http://www.pygtk.org/docs/pygtk/class-gdkevent.html

+0

這* *幾乎*的作品。我不確定我是否應該關注gtk.MenuBar,gtk.MenuItem或gtk.Menu上的進入/離開事件。在MenuBar上使用上面的代碼不會做任何事情,用BUTTON_PRESS和按鈕事件工作代替,但是在光標關閉和在菜單上移動幾次後,它會導致段錯誤。註釋按鈕按下事件的創建會停止崩潰,因此創建導致段錯誤的事件。 – Kazade 2010-04-28 10:43:19

+0

忽略這一點,崩潰是由我在leave notify事件中調用MenuBar.cancel()引起的。我會盡力解決這個問題,謝謝! – Kazade 2010-04-28 10:52:39

0

您可以在輸入位置模擬點擊事件。

+0

你知道該怎麼做?我一直在尋找,我無法弄清楚(我對Gtk +來說是新手)。 – Kazade 2010-04-26 14:29:55