버튼에 연결된 "enter-notify-event"및 "leave-notify-event"가 예를 들어 팝업 메뉴 표시 및 숨기기와 같은 작업을 수행하는 데 도움이 될 수 있습니다.
마침내 사람들은 "입력"및 이벤트 그 동작이 조금 복잡하고, 단지 "모션 통지 이벤트"사용 "을두고"잊었
편집 ...
이제 내가 원하는대로되기를 바랍니다!
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class MenuExample:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(200, 100)
self.window.set_title("GTK Menu Test")
self.window.connect("delete_event", lambda w,e: gtk.main_quit())
# A vbox to put a button in:
vbox = gtk.VBox(False, 0)
self.window.add(vbox)
vbox.show()
self.popped = False
# Create a button to simulate a menu
button = gtk.Button("press me")
vbox.pack_start(button, False, False, 2)
self.window.add_events(gtk.gdk.POINTER_MOTION_MASK)
self.window.connect("motion-notify-event", self.wakeup)
self.window.show_all()
self.bmenu = gtk.Button("A single entry menu")
self.bmenu.connect("clicked", self. menuitem_response, "Click on the magic menu !")
vbox.pack_start(self.bmenu, False, False, 2)
def wakeup(self, widget, event):
#print "Event number %d woke me up" % event.type
(x, y) = self.window.get_pointer()
if y < 30:
if self.popped == False:
self.popped = True
self.bmenu.show()
elif y > 60:
if self.popped == True:
self.popped = False
self.bmenu.hide()
# Print a string when a menu item is selected
def menuitem_response(self, widget, string):
print "%s" % string
def main():
gtk.main()
return 0
if __name__ == "__main__":
MenuExample()
main()
샘플을 제공해 주시겠습니까? 나는 그 버튼에 "leave-notify-event"를 연결하고 그것을 클릭하면 메뉴도 보이지 않을 것이고 너무 많은 이벤트가이 이벤트에 넘쳐 흐른다. 게다가, 만약 내가 enter 이벤트를 연결하면, 메뉴를 보여주기 위해서, 내 프로그램은 너무 많은 이벤트가 막혀 버릴 것이다. – daisy
지연을 위해 미안하다 ... 나의 편집을보고 즐겨라! – Louis
유선, 출력 없음, 오류 없음, 창 없음, 전체 텍스트 복사,'main.py'에 넣기,'python main.py' 시도 – daisy