我已經使用菜單項在PyGtk +中編寫了一個Gnome窗口切換器小程序來表示在桌面上運行的不同應用程序。我想要做的一件事是當我將鼠標懸停在菜單欄上時,激活光標下的菜單項。我可以連接到菜單欄上的'enter-notify-event',但是我不知道在什麼時候觸發它。在懸停時觸發一個Gtk +菜單欄
這就是我的問題,當我將鼠標懸停在其父項上時,如何打開菜單欄的子菜單?
我已經使用菜單項在PyGtk +中編寫了一個Gnome窗口切換器小程序來表示在桌面上運行的不同應用程序。我想要做的一件事是當我將鼠標懸停在菜單欄上時,激活光標下的菜單項。我可以連接到菜單欄上的'enter-notify-event',但是我不知道在什麼時候觸發它。在懸停時觸發一個Gtk +菜單欄
這就是我的問題,當我將鼠標懸停在其父項上時,如何打開菜單欄的子菜單?
這應該做的伎倆:
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_event
從enter-notify-event
,然後發射它在你的menu
。
你可以閱讀更多有關事件的位置:
http://www.pygtk.org/docs/pygtk/class-gdkevent.html
這* *幾乎*的作品。我不確定我是否應該關注gtk.MenuBar,gtk.MenuItem或gtk.Menu上的進入/離開事件。在MenuBar上使用上面的代碼不會做任何事情,用BUTTON_PRESS和按鈕事件工作代替,但是在光標關閉和在菜單上移動幾次後,它會導致段錯誤。註釋按鈕按下事件的創建會停止崩潰,因此創建導致段錯誤的事件。 – Kazade 2010-04-28 10:43:19
忽略這一點,崩潰是由我在leave notify事件中調用MenuBar.cancel()引起的。我會盡力解決這個問題,謝謝! – Kazade 2010-04-28 10:52:39